home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Visual Database / Visual dBase Pro v7.0 / DATA1.CAB / Sample_Include / Win32api.prg < prev    next >
Encoding:
Text File  |  1997-11-20  |  106.6 KB  |  2,321 lines

  1. //--------------------------------------------------------------
  2. //
  3. //  WIN32API.PRG
  4. //
  5. //  This file contains Windows API function prototypes for
  6. //  use with Visual dBASE. By simply DOing the file, all of
  7. //  the functions are prototyped. To prototype only a section
  8. //  of functions, you can use one of the section constants
  9. //  defined at the beginning of WIN32API.H.  You can combine
  10. //  these constants to prototype multiple sections. The type
  11. //  and constant declarations for the Win32 API are declared
  12. //  in WIN32API.H.
  13. //
  14. //  USAGE:  (in a file)
  15. //          #include <WIN32API.H>
  16. //          DO WIN32API.PRG    // to prototype all functions
  17. //
  18. //          // prototype only the Registry functions:
  19. //          DO WIN32API.PRG WITH WIN32API_REGISTRY
  20. //
  21. //          // prototype the GDI and INI file functions
  22. //          DO WIN32API.PRG with WIN32API_ALLGDI + WIN32API_INIFILE
  23. //
  24. //
  25. //  Visual dBASE Samples Group
  26. //
  27. //  $Revision:   1.3  $
  28. //
  29. //  Portions copyright (c) 1990-1995, Microsoft Corp.
  30. //
  31. //--------------------------------------------------------------
  32.  
  33. parameter lpSection
  34.  
  35. #include <WINDEF.H>
  36. #define HWND CHANDLE  // not in WINDEF.H due to conflict with dBASE property
  37.  
  38. //
  39. //  This program file is intended to be executed where ever it is 
  40. //  vital that the API functions be externed, rather than being 
  41. //  #included.  The variable on _app reduces the execution speed 
  42. //  of the final code, by only doing the externs one time. 
  43. //
  44.  
  45. if TYPE('_app.Win32APIAlreadyRun') == 'U' OR ( NOT _app.Win32APIAlreadyRun )
  46.    //
  47.    //  If the file is run without conditions then set the _app 
  48.    //  variable so the file is not run again.
  49.    //
  50.    if PCOUNT() == 0
  51.       _app.Win32APIAlreadyRun = true
  52.       lpSection = WIN32API_ALLSECTIONS
  53.    endif   
  54.  
  55.    if bitand(lpSection, WIN32API_KERNEL) <> 0
  56.       ExternKernel()
  57.    endif
  58.  
  59.    if bitand(lpSection, WIN32API_INIFILE) <> 0
  60.       ExternIniFile()
  61.    endif
  62.  
  63.  
  64.    if bitand(lpSection, WIN32API_ADVAPI) <> 0
  65.       ExternADVAPI()
  66.    endif
  67.  
  68.    if bitand(lpSection, WIN32API_GDI) <> 0
  69.       ExternGDI()
  70.    endif
  71.  
  72.    if bitand(lpSection, WIN32API_USER) <> 0
  73.       ExternUser()
  74.    endif
  75.  
  76.    if bitand(lpSection, WIN32API_REGISTRY) <> 0
  77.       ExternRegistry()
  78.    endif
  79.  
  80.    if bitand(lpSection, WIN32API_NETWORK) <> 0
  81.       ExternNetwork()
  82.    endif  
  83.  
  84.    if bitand(lpSection, WIN32API_SHELL) <> 0
  85.       ExternShell()
  86.    endif
  87.  
  88.    if bitand(lpSection, WIN32API_DIALOG) <> 0
  89.       ExternDialog()
  90.    endif
  91.  
  92. endif   // type('_app.Win32APIAlreadyRun') = 'U'
  93.  
  94. function ExternKernel
  95.    //------------------------------------------------------------------
  96.    //   Adapted from winbase.h 
  97.    //   This section defines the 32-Bit Windows Base APIs
  98.    //------------------------------------------------------------------
  99.  
  100.    extern LONG        InterlockedIncrement( LPLONG ) kernel32
  101.    extern LONG        InterlockedDecrement( LPLONG ) kernel32
  102.    extern LONG        InterlockedExchange( LPLONG ) kernel32
  103.  
  104. // extern BOOL        FreeResource( HGLOBAL ) kernel32      // obsolete
  105.    extern CLONG       LockResource( HGLOBAL ) kernel32
  106.    extern BOOL        FreeLibrary( HMODULE ) kernel32
  107.    extern VOID        FreeLibraryAndExitThread(HMODULE, DWORD) kernel32
  108.    extern BOOL        DisableThreadLibraryCalls(HMODULE) kernel32
  109.    extern CLONG       GetProcAddress(HMODULE, LPCSTR) kernel32
  110.    extern DWORD       GetVersion( VOID ) kernel32
  111.  
  112.    extern HGLOBAL     GlobalAlloc(UINT, DWORD) kernel32
  113.    extern HGLOBAL     GlobalReAlloc(HGLOBAL, DWORD, UINT) kernel32
  114.    extern DWORD       GlobalSize(HGLOBAL) kernel32
  115.    extern UINT        GlobalFlags(HGLOBAL) kernel32
  116.    extern CLONG       GlobalLock(HGLOBAL) kernel32
  117.    extern HGLOBAL     GlobalHandle(LPCVOID) kernel32
  118.    extern BOOL        GlobalUnlock(HGLOBAL) kernel32
  119.    extern HGLOBAL     GlobalFree(HGLOBAL) kernel32
  120. // extern UINT        GlobalCompact(DWORD) kernel32        // obsolete
  121. // extern VOID        GlobalFix(HGLOBAL) kernel32          // obsolete
  122. // extern VOID        GlobalUnfix(HGLOBAL) kernel32        // obsolete
  123. // extern CLONG       GlobalWire(HGLOBAL)  kernel32       // obsolete
  124. // extern BOOL        GlobalUnWire(HGLOBAL)  kernel32      // obsolete
  125.    extern VOID        GlobalMemoryStatus(LPSTRUCTURE) kernel32
  126.  
  127.    extern HLOCAL      LocalAlloc(UINT, UINT) kernel32
  128.    extern HLOCAL      LocalReAlloc(HLOCAL, UINT, UINT) kernel32
  129.    extern CLONG       LocalLock(HLOCAL) kernel32
  130.    extern HLOCAL      LocalHandle(LPCVOID) kernel32
  131.    extern BOOL        LocalUnlock(HLOCAL) kernel32
  132.    extern UINT        LocalSize(HLOCAL) kernel32
  133.    extern UINT        LocalFlags(HLOCAL) kernel32
  134.    extern HLOCAL      LocalFree(HLOCAL) kernel32
  135. // extern UINT        LocalShrink(HLOCAL, UINT) kernel32   // obsolete
  136. // extern UINT        LocalCompact(UINT uMinFree) kernel32 // obsolete
  137.  
  138.    extern BOOL        FlushInstructionCache(HANDLE, LPCVOID, DWORD) kernel32
  139.  
  140.    extern CLONG       VirtualAlloc(LPVOID, DWORD, DWORD, DWORD) kernel32
  141.    extern BOOL        VirtualFree(LPVOID, DWORD, DWORD) kernel32
  142.    extern BOOL        VirtualProtect(LPVOID, DWORD, DWORD, PDWORD) kernel32
  143.    extern DWORD       VirtualQuery(LPCVOID, PSTRUCTURE, DWORD) kernel32
  144.  
  145.    extern BOOL        VirtualProtectEx(HANDLE, LPVOID, DWORD, DWORD, ;
  146.                    PDWORD) kernel32
  147.  
  148.    extern DWORD       VirtualQueryEx(HANDLE, LPCVOID, PSTRUCTURE, ;
  149.                    DWORD) kernel32
  150.  
  151.    extern HANDLE      HeapCreate(DWORD, DWORD, DWORD) kernel32
  152.    extern BOOL        HeapDestroy(HANDLE) kernel32
  153.    extern CLONG       HeapAlloc(HANDLE, DWORD, DWORD) kernel32
  154.    extern CLONG       HeapReAlloc(HANDLE, DWORD, LPVOID, DWORD) kernel32
  155.    extern BOOL        HeapFree(HANDLE, DWORD, LPVOID) kernel32
  156.    extern DWORD       HeapSize(HANDLE, DWORD, LPCVOID) kernel32
  157.  
  158.    extern BOOL        HeapValidate(HANDLE, DWORD, LPCVOID) kernel32
  159.    extern UINT        HeapCompact(HANDLE, DWORD) kernel32
  160.  
  161.    extern HANDLE      GetProcessHeap( VOID ) kernel32
  162.  
  163.    extern DWORD       GetProcessHeaps(DWORD, PHANDLE) kernel32
  164.    extern BOOL        HeapLock(HANDLE) kernel32
  165.    extern BOOL        HeapUnlock(HANDLE) kernel32
  166.    extern BOOL        HeapWalk(HANDLE, LPSTRUCTURE) kernel32
  167.  
  168.    extern BOOL        GetBinaryType(LPCSTR, LPDWORD) kernel32 ;
  169.                    from "GetBinaryTypeA"
  170.  
  171.    extern DWORD       GetShortPathName(LPCSTR, LPSTR, DWORD) kernel32 ;
  172.                    from "GetShortPathNameA"
  173.  
  174.    extern BOOL        GetProcessAffinityMask(HANDLE, LPDWORD, LPDWORD) kernel32
  175.  
  176.    extern BOOL        GetProcessTimes(HANDLE, LPSTRUCTURE, LPSTRUCTURE, ;
  177.                    LPSTRUCTURE, LPSTRUCTURE) kernel32
  178.    extern BOOL        GetProcessWorkingSetSize(HANDLE, LPDWORD, ;
  179.                    LPDWORD) kernel32
  180.    extern BOOL        SetProcessWorkingSetSize(HANDLE, DWORD, DWORD) kernel32
  181.  
  182.    extern HANDLE      OpenProcess(DWORD, BOOL, DWORD) kernel32
  183.  
  184.    extern HANDLE      GetCurrentProcess( VOID ) kernel32
  185.    extern DWORD       GetCurrentProcessId( VOID ) kernel32
  186.    extern VOID        ExitProcess( UINT ) kernel32
  187.  
  188.    extern BOOL        TerminateProcess(HANDLE, UINT ) kernel32
  189.  
  190.    extern BOOL        GetExitCodeProcess(HANDLE, LPDWORD) kernel32
  191.    extern VOID        FatalExit( CINT) kernel32
  192.    extern LPSTR       GetEnvironmentStrings( VOID ) kernel32
  193.  
  194.    extern BOOL        FreeEnvironmentStrings(LPSTR ) kernel32 ;
  195.                    from "FreeEnvironmentStringsA"
  196.  
  197.    extern VOID        RaiseException(DWORD, DWORD, DWORD, LPDWORD ) kernel32
  198.    extern LONG        UnhandledExceptionFilter( LPSTRUCTURE ) kernel32
  199.    extern CLONG       SetUnhandledExceptionFilter(LPSTRUCTURE) kernel32
  200.  
  201.    extern HANDLE      CreateThread(LPSTRUCTURE, DWORD, LPSTRUCTURE, LPVOID, ;
  202.                    DWORD, LPDWORD) kernel32
  203.  
  204.    extern HANDLE      CreateRemoteThread(HANDLE, LPSTRUCTURE, DWORD, ;
  205.                    LPSTRUCTURE, LPVOID, DWORD, LPDWORD ) kernel32
  206.  
  207.    extern HANDLE      GetCurrentThread( VOID ) kernel32
  208.    extern DWORD       GetCurrentThreadId( VOID) kernel32
  209.  
  210.    extern DWORD       SetThreadAffinityMask(HANDLE, DWORD) kernel32
  211.    extern BOOL        SetThreadPriority( HANDLE, CINT ) kernel32
  212.    extern CINT        GetThreadPriority( HANDLE ) kernel32
  213.  
  214.    extern BOOL        GetThreadTimes(HANDLE, LPSTRUCTURE, LPSTRUCTURE, ;
  215.                    LPSTRUCTURE, LPSTRUCTURE) kernel32
  216.  
  217.    extern VOID        ExitThread( DWORD ) kernel32
  218.    extern BOOL        TerminateThread(HANDLE, DWORD) kernel32
  219.  
  220.    extern BOOL        GetExitCodeThread(HANDLE, LPDWORD) kernel32
  221.    extern BOOL        GetThreadSelectorEntry(HANDLE, DWORD, LPSTRUCTURE) kernel32
  222.    extern DWORD       GetLastError( VOID ) kernel32
  223.    extern VOID        SetLastError( DWORD ) kernel32
  224.  
  225.    extern BOOL        GetOverlappedResult(HANDLE, LPSTRUCTURE, LPDWORD, BOOL) ;
  226.                    kernel32
  227.    extern HANDLE      CreateIoCompletionPort(HANDLE, HANDLE, DWORD, DWORD) ;
  228.                    kernel32
  229.    extern BOOL        GetQueuedCompletionStatus(HANDLE, LPDWORD, LPDWORD, ;
  230.                    LPSTRUCTURE, DWORD) kernel32
  231.  
  232.    extern BOOL        ReadProcessMemory(HANDLE, LPCVOID, LPVOID, DWORD, ;
  233.                    LPDWORD) kernel32
  234.  
  235.    extern BOOL        WriteProcessMemory(HANDLE, LPVOID, LPVOID, DWORD, ;
  236.                    LPDWORD ) kernel32
  237.  
  238.    extern BOOL        GetThreadContext(HANDLE, LPSTRUCTURE) kernel32
  239.    extern BOOL        SetThreadContext(HANDLE, LPSTRUCTURE) kernel32
  240.  
  241.    extern DWORD       SuspendThread( HANDLE ) kernel32
  242.  
  243.    extern DWORD       ResumeThread( HANDLE ) kernel32
  244.  
  245.    extern VOID        DebugBreak( VOID ) kernel32
  246.    extern BOOL        WaitForDebugEvent( LPSTRUCTURE, DWORD ) kernel32
  247.    extern BOOL        ContinueDebugEvent(DWORD, DWORD, DWORD) kernel32
  248.  
  249.    extern BOOL        DebugActiveProcess( DWORD ) kernel32
  250.  
  251.    extern VOID        InitializeCriticalSection( LPSTRUCTURE ) kernel32
  252.    extern VOID        EnterCriticalSection( LPSTRUCTURE ) kernel32
  253.    extern VOID        LeaveCriticalSection( LPSTRUCTURE ) kernel32
  254.    extern VOID        DeleteCriticalSection( LPSTRUCTURE ) kernel32
  255.  
  256.    extern BOOL        SetEvent( HANDLE ) kernel32
  257.    extern BOOL        ResetEvent( HANDLE ) kernel32
  258.    extern BOOL        PulseEvent( HANDLE ) kernel32
  259.    extern BOOL        ReleaseSemaphore( HANDLE, LONG, LPLONG ) kernel32
  260.    extern BOOL        ReleaseMutex( HANDLE ) kernel32
  261.    extern DWORD       WaitForSingleObject(HANDLE, DWORD) kernel32
  262.    extern DWORD       WaitForMultipleObjects(DWORD, LPHANDLE, BOOL, ;
  263.                    DWORD) kernel32
  264.  
  265.    extern VOID        Sleep( DWORD ) kernel32
  266.    extern HGLOBAL     LoadResource(HMODULE, HRSRC) kernel32
  267.    extern DWORD       SizeofResource(HMODULE, HRSRC) kernel32
  268.    extern ATOM        GlobalDeleteAtom( ATOM ) kernel32
  269.    extern BOOL        InitAtomTable( DWORD ) kernel32
  270.    extern ATOM        DeleteAtom( ATOM ) kernel32
  271.    extern UINT        SetHandleCount( UINT ) kernel32
  272.    extern DWORD       GetLogicalDrives( VOID ) kernel32
  273.    extern BOOL        LockFile(HANDLE, DWORD, DWORD, DWORD, DWORD ) kernel32
  274.    extern BOOL        UnlockFile(HANDLE, DWORD, DWORD, DWORD, DWORD ) kernel32
  275.  
  276.    extern BOOL        LockFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, ;
  277.                    LPSTRUCTURE ) kernel32
  278.    extern BOOL        UnlockFileEx(HANDLE, DWORD, DWORD, DWORD, ;
  279.                    LPSTRUCTURE ) kernel32
  280.  
  281.    extern BOOL        GetFileInformationByHandle(HANDLE, LPSTRUCTURE) kernel32
  282.  
  283.    extern DWORD       GetFileType( HANDLE ) kernel32
  284.    extern DWORD       GetFileSize(HANDLE, LPDWORD ) kernel32
  285.    extern HANDLE      GetStdHandle( DWORD ) kernel32
  286.    extern BOOL        SetStdHandle(DWORD, HANDLE ) kernel32
  287.    extern BOOL        WriteFile(HANDLE, LPCVOID, DWORD, LPDWORD, LPSTRUCTURE) ;
  288.                    kernel32
  289.    extern BOOL        ReadFile(HANDLE, LPVOID, DWORD, LPDWORD, LPSTRUCTURE) ;
  290.                    kernel32
  291.    extern BOOL        FlushFileBuffers( HANDLE ) kernel32
  292.  
  293.    extern BOOL        DeviceIoControl(HANDLE, DWORD, LPVOID, DWORD, LPVOID, ;
  294.                    DWORD, LPDWORD, LPSTRUCTURE) kernel32
  295.  
  296.    extern BOOL        SetEndOfFile( HANDLE ) kernel32
  297.    extern DWORD       SetFilePointer(HANDLE, LONG, PLONG, DWORD ) kernel32
  298.    extern BOOL        FindClose( HANDLE ) kernel32
  299.    extern BOOL        GetFileTime(HANDLE, LPSTRUCTURE, LPSTRUCTURE, ;
  300.                    LPSTRUCTURE ) kernel32
  301.    extern BOOL        SetFileTime(HANDLE, LPSTRUCTURE, LPSTRUCTURE, ;
  302.                    LPSTRUCTURE ) kernel32
  303.    extern BOOL        CloseHandle( HANDLE ) kernel32
  304.    extern BOOL        DuplicateHandle(HANDLE, HANDLE, HANDLE, LPHANDLE, ;
  305.                    DWORD, BOOL, DWORD) kernel32
  306.  
  307.    extern BOOL        GetHandleInformation(HANDLE, LPDWORD) kernel32
  308.    extern BOOL        SetHandleInformation(HANDLE, DWORD, DWORD) kernel32
  309.  
  310.    extern DWORD       LoadModule(LPCSTR, LPVOID) kernel32
  311.    extern UINT        WinExec(LPCSTR, UINT) kernel32
  312.    extern BOOL        ClearCommBreak( HANDLE ) kernel32
  313.    extern BOOL        ClearCommError(HANDLE, LPDWORD, LPSTRUCTURE) kernel32
  314.    extern BOOL        SetupComm(HANDLE, DWORD, DWORD) kernel32
  315.    extern BOOL        EscapeCommFunction(HANDLE, DWORD) kernel32
  316.  
  317.    extern BOOL        GetCommConfig(HANDLE, LPSTRUCTURE, LPDWORD) kernel32
  318.  
  319.    extern BOOL        GetCommMask(HANDLE, LPDWORD) kernel32
  320.    extern BOOL        GetCommProperties(HANDLE, LPSTRUCTURE) kernel32
  321.    extern BOOL        GetCommModemStatus(HANDLE, LPDWORD) kernel32
  322.    extern BOOL        GetCommState(HANDLE, LPSTRUCTURE) kernel32
  323.    extern BOOL        GetCommTimeouts(HANDLE, LPSTRUCTURE) kernel32
  324.    extern BOOL        PurgeComm(HANDLE, DWORD) kernel32
  325.    extern BOOL        SetCommBreak( HANDLE ) kernel32
  326.  
  327.    extern BOOL        SetCommConfig(HANDLE, LPSTRUCTURE, DWORD) kernel32
  328.  
  329.    extern BOOL        SetCommMask(HANDLE, DWORD) kernel32
  330.    extern BOOL        SetCommState(HANDLE, LPSTRUCTURE) kernel32
  331.    extern BOOL        SetCommTimeouts(HANDLE, LPSTRUCTURE) kernel32
  332.    extern BOOL        TransmitCommChar(HANDLE, CHAR) kernel32
  333.    extern BOOL        WaitCommEvent(HANDLE, LPDWORD, LPSTRUCTURE) kernel32
  334.  
  335.    extern DWORD       SetTapePosition(HANDLE, DWORD, DWORD, DWORD, DWORD, BOOL) kernel32
  336.    extern DWORD       GetTapePosition(HANDLE, DWORD, LPDWORD, LPDWORD, LPDWORD) kernel32
  337.    extern DWORD       PrepareTape(HANDLE, DWORD, BOOL) kernel32
  338.    extern DWORD       EraseTape(HANDLE, DWORD, BOOL) kernel32
  339.    extern DWORD       CreateTapePartition(HANDLE, DWORD, DWORD, DWORD) kernel32
  340.    extern DWORD       WriteTapemark(HANDLE, DWORD, DWORD, BOOL) kernel32
  341.    extern DWORD       GetTapeStatus( HANDLE ) kernel32
  342.    extern DWORD       GetTapeParameters(HANDLE, DWORD, LPDWORD, LPVOID) kernel32
  343.    extern DWORD       SetTapeParameters(HANDLE, DWORD, LPVOID) kernel32
  344.  
  345.    extern BOOL        Beep(DWORD, DWORD) kernel32
  346.  
  347. // extern VOID        OpenSound( VOID ) kernel32         // Obsolete
  348. // extern VOID        CloseSound( VOID ) kernel32        // Obsolete
  349. // extern VOID        StartSound( VOID ) kernel32        // Obsolete
  350. // extern VOID        StopSound( VOID ) kernel32         // Obsolete
  351. // extern DWORD       WaitSoundState( DWORD ) kernel32   // Obsolete
  352. // extern DWORD       SyncAllVoices( VOID ) kernel32     // Obsolete
  353. // extern DWORD       CountVoiceNotes( DWORD ) kernel32  // Obsolete
  354. // extern LPDWORD     GetThresholdEvent( VOID ) kernel32            // Obsolete
  355. // extern DWORD       GetThresholdStatus( VOID ) kernel32           // Obsolete
  356. // extern DWORD       SetSoundNoise( DWORD, DWORD ) kernel32        // Obsolete
  357. // extern DWORD       SetVoiceAccent(DWORD, DWORD, DWORD, DWORD, DWORD) kernel32 // Obsolete
  358. // extern DWORD       SetVoiceEnvelope(DWORD, DWORD, DWORD) kernel32     // Obsolete
  359. // extern DWORD       SetVoiceNote(DWORD, DWORD, DWORD, DWORD) kernel32  // Obsolete
  360. // extern DWORD       SetVoiceQueueSize(DWORD, DWORD) kernel32      // Obsolete
  361. // extern DWORD       SetVoiceSound(DWORD, DWORD, DWORD) kernel32   // Obsolete
  362. // extern DWORD       SetVoiceThreshold(DWORD, DWORD) kernel32      // Obsolete
  363.  
  364.    extern CINT        MulDiv(CINT, CINT, CINT) kernel32
  365.    extern VOID        GetSystemTime( LPSTRUCTURE ) kernel32
  366.    extern VOID        GetSystemTimeAsFileTime( LPSTRUCTURE ) kernel32
  367.    extern BOOL        SetSystemTime( LPSTRUCTURE ) kernel32
  368.  
  369.    extern VOID        GetLocalTime( LPSTRUCTURE ) kernel32
  370.    extern BOOL        SetLocalTime( LPSTRUCTURE ) kernel32
  371.    extern VOID        GetSystemInfo( LPSTRUCTURE ) kernel32
  372.    extern BOOL        SystemTimeToTzSpecificLocalTime( LPSTRUCTURE, ;
  373.                    LPSTRUCTURE, LPSTRUCTURE) kernel32
  374.    extern DWORD       GetTimeZoneInformation( LPSTRUCTURE ) kernel32
  375.    extern BOOL        SetTimeZoneInformation( LPSTRUCTURE ) kernel32
  376.  
  377.    //
  378.    // Routines to convert back and forth between system time and 
  379.    // file time
  380.    //
  381.    extern BOOL        SystemTimeToFileTime(LPSTRUCTURE, LPSTRUCTURE) kernel32
  382.    extern BOOL        FileTimeToLocalFileTime(LPSTRUCTURE, LPSTRUCTURE) kernel32
  383.    extern BOOL        LocalFileTimeToFileTime(LPSTRUCTURE, LPSTRUCTURE) kernel32
  384.    extern BOOL        FileTimeToSystemTime(LPSTRUCTURE, LPSTRUCTURE) kernel32
  385.    extern LONG        CompareFileTime(LPSTRUCTURE, LPSTRUCTURE) kernel32
  386.    extern BOOL        FileTimeToDosDateTime(LPSTRUCTURE, LPWORD, LPWORD) kernel32
  387.    extern BOOL        DosDateTimeToFileTime(WORD, WORD, LPSTRUCTURE) kernel32
  388.    extern DWORD       GetTickCount( VOID ) kernel32
  389.  
  390.    extern BOOL        SetSystemTimeAdjustment(DWORD, BOOL) kernel32
  391.    extern BOOL        GetSystemTimeAdjustment(PDWORD, PDWORD, PBOOL) kernel32
  392.  
  393.    extern DWORD       FormatMessage(DWORD, LPCVOID, DWORD, DWORD, LPSTR, ;
  394.                    DWORD, CPTR) kernel32  ;
  395.                    from "FormatMessageA"
  396.  
  397.    extern CLONG       MapViewOfFile(HANDLE, DWORD, DWORD, DWORD, DWORD) kernel32
  398.    extern BOOL        FlushViewOfFile(LPCVOID, DWORD) kernel32
  399.    extern BOOL        UnmapViewOfFile( LPCVOID ) kernel32
  400.  
  401.    //
  402.    // _l Compat Functions
  403.    //
  404.  
  405.    extern CINT        lstrcmp(LPCSTR, LPCSTR) kernel32 ;
  406.                    from "lstrcmpA"
  407.    extern CINT        lstrcmpi(LPCSTR, LPCSTR) kernel32 ;
  408.                    from "lstrcmpiA"
  409.    extern LPSTR       lstrcpyn(LPSTR, LPCSTR, CINT) kernel32 ;
  410.                    from "lstrcpynA"
  411.    extern LPSTR       lstrcpy(LPSTR, LPCSTR) kernel32 ;
  412.                    from "lstrcpyA"
  413.    extern LPSTR       lstrcat(LPSTR, LPCSTR) kernel32 ;
  414.                    from "lstrcatA"
  415.    extern CINT        lstrlen( LPCSTR ) kernel32 ;
  416.                    from "lstrlenA"
  417.  
  418.    extern HFILE       OpenFile(LPCSTR, LPSTRUCTURE, UINT) kernel32
  419.    extern HFILE       _lopen(LPCSTR, CINT) kernel32
  420.    extern HFILE       _lcreat(LPCSTR, CINT) kernel32
  421.    extern UINT        _lread(HFILE, LPVOID, UINT) kernel32
  422.    extern UINT        _lwrite(HFILE, LPCSTR, UINT) kernel32
  423.    extern LONG        _hread(HFILE, LPVOID, LONG) kernel32
  424.    extern LONG        _hwrite(HFILE, LPCSTR, LONG) kernel32
  425.    extern HFILE       _lclose( HFILE ) kernel32
  426.    extern LONG        _llseek(HFILE, LONG, CINT) kernel32
  427.  
  428.    extern DWORD       TlsAlloc( VOID ) kernel32
  429.    extern CLONG       TlsGetValue( DWORD ) kernel32
  430.    extern BOOL        TlsSetValue(DWORD, LPVOID ) kernel32
  431.    extern BOOL        TlsFree( DWORD ) kernel32
  432.    extern DWORD       SleepEx(DWORD, BOOL) kernel32
  433.  
  434.    extern DWORD       WaitForSingleObjectEx(HANDLE, DWORD, BOOL) kernel32
  435.    extern DWORD       WaitForMultipleObjectsEx(DWORD, LPHANDLE, BOOL, ;
  436.                    DWORD, BOOL) kernel32
  437.    extern BOOL        ReadFileEx(HANDLE, LPVOID, DWORD, LPSTRUCTURE, ;
  438.                    LPSTRUCTURE) kernel32
  439.    extern BOOL        WriteFileEx(HANDLE, LPCVOID, DWORD, LPSTRUCTURE,  ;
  440.                    LPSTRUCTURE) kernel32
  441.    extern BOOL        BackupRead(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, ;
  442.                    BOOL, LPVOID) kernel32
  443.    extern BOOL        BackupSeek(HANDLE, DWORD, DWORD, LPDWORD, LPDWORD, ;
  444.                    LPVOID) kernel32
  445.    extern BOOL        BackupWrite(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, ;
  446.                    BOOL, LPVOID) kernel32
  447.    extern HANDLE      CreateMutex(LPSTRUCTURE, BOOL , LPCSTR) kernel32 ;
  448.                    from "CreateMutexA"
  449.    extern HANDLE      OpenMutex(DWORD, BOOL, LPCSTR) kernel32 ;
  450.                    from "OpenMutexA"
  451.    extern HANDLE      CreateEvent(LPSTRUCTURE, BOOL, BOOL, LPCSTR) kernel32 ;
  452.                    from "CreateEventA"
  453.    extern HANDLE      OpenEvent(DWORD, BOOL, LPCSTR) kernel32 ;
  454.                    from "OpenEventA"
  455.    extern HANDLE      CreateSemaphore(LPSTRUCTURE, LONG, LONG, ;
  456.                    LPCSTR) kernel32 ;
  457.                    from "CreateSemaphoreA"
  458.    extern HANDLE      OpenSemaphore(DWORD, BOOL, LPCSTR) kernel32 ;
  459.                    from "OpenSemaphoreA"
  460.  
  461.    extern HANDLE      CreateFileMapping(HANDLE, LPSTRUCTURE, DWORD, DWORD, ;
  462.                    DWORD, LPCSTR) kernel32 ;
  463.                    from "CreateFileMappingA"
  464.    extern HANDLE      OpenFileMapping(DWORD, BOOL, LPCSTR) kernel32 ;
  465.                    from "OpenFileMappingA"
  466.  
  467.    extern DWORD       GetLogicalDriveStrings(DWORD, LPSTR) kernel32 ;
  468.                    from "GetLogicalDriveStringsA"
  469.  
  470.    extern HMODULE     LoadLibrary( LPCSTR ) kernel32 ;
  471.                    from "LoadLibraryA"
  472.    extern HMODULE     LoadLibraryEx(LPCSTR, HANDLE, DWORD) kernel32 ;
  473.                    from "LoadLibraryA"
  474.    extern DWORD       GetModuleFileName(HMODULE, LPSTR, DWORD) kernel32 ;
  475.                    from "GetModuleFileNameA"
  476.    extern HMODULE     GetModuleHandle( LPCSTR ) kernel32 ;
  477.                    from "GetModuleHandleA"
  478.    extern BOOL        CreateProcess(LPCSTR, LPSTR, LPSTRUCTURE, LPSTRUCTURE, ;
  479.                    BOOL, DWORD, LPVOID, LPCSTR, LPSTRUCTURE, LPSTRUCTURE) ;
  480.                    kernel32 ;
  481.                    from "CreateProcessA"
  482.  
  483.    extern BOOL        SetProcessShutdownParameters(DWORD, DWORD) kernel32
  484.    extern BOOL        GetProcessShutdownParameters(LPDWORD, LPDWORD) kernel32
  485.    extern DWORD       GetProcessVersion( DWORD ) kernel32
  486.  
  487.    extern VOID        FatalAppExit(UINT, LPCSTR) kernel32 ;
  488.                    from "FatalAppExitA"
  489.    extern VOID        GetStartupInfo( LPSTRUCTURE) kernel32 ;
  490.                    from "GetStartupInfoA"
  491.    extern LPSTR       GetCommandLine( VOID ) kernel32 ;
  492.                    from "GetCommandLineA"
  493.    extern DWORD       GetEnvironmentVariable(LPCSTR, LPSTR, DWORD) kernel32 ;
  494.                    from "GetEnvironmentVariableA"
  495.    extern BOOL        SetEnvironmentVariable(LPCSTR, LPCSTR) kernel32 ;
  496.                    from "SetEnvironmentVariableA"
  497.  
  498.    extern DWORD       ExpandEnvironmentStrings(LPCSTR, LPSTR, DWORD) kernel32 ;
  499.                    from "ExpandEnvironmentStringsA"
  500.  
  501.    extern VOID        OutputDebugString( LPCSTR ) kernel32 ;
  502.                    from "OutputDebugStringA"
  503.    extern HRSRC       FindResource(HMODULE, LPCSTR, LPCSTR) kernel32 ;
  504.                    from "FindResourceA"
  505.    extern HRSRC       FindResourceEx(HMODULE, LPCSTR, LPCSTR, WORD) kernel32 ;
  506.                    from "FindResourceExA"
  507.  
  508.    extern BOOL        EnumResourceTypes(HMODULE, FARPROC, LONG) kernel32 ;
  509.                    from "EnumResourceTypesA"
  510.    extern BOOL        EnumResourceNames(HMODULE, PCSTR, FARPROC, LONG) kernel32 ;
  511.                    from "EnumResourceNamesA"
  512.    extern BOOL        EnumResourceLanguages(HMODULE, LPCSTR, LPCSTR, FARPROC, ;
  513.                    LONG) kernel32 ;
  514.                    from "EnumResourceLanguagesA"
  515.  
  516.    extern HANDLE      BeginUpdateResource(LPCSTR, BOOL) kernel32 ;
  517.                    from "BeginUpdateResourceA"
  518.    extern BOOL        UpdateResource(HANDLE, LPCSTR, LPCSTR, WORD, LPVOID, ;
  519.                    DWORD) kernel32 ;
  520.                    from "UpdateResourceA"
  521.    extern BOOL        EndUpdateResource(HANDLE, BOOL) kernel32 ;
  522.                    from "EndUpdateResourceA"
  523.  
  524.    extern ATOM        GlobalAddAtom( LPCSTR ) kernel32 ;
  525.                    from "GlobalAddAtomA"
  526.    extern ATOM        GlobalFindAtom( LPCSTR ) kernel32 ;
  527.                    from "GlobalFindAtomA"
  528.    extern UINT        GlobalGetAtomName(ATOM, LPSTR, CINT) kernel32 ;
  529.                    from "GlobalGetAtomNameA"
  530.    extern ATOM        AddAtom( LPCSTR ) kernel32 ;
  531.                    from "AddAtomA"
  532.    extern ATOM        FindAtom( LPCSTR ) kernel32 ;
  533.                    from "FindAtomA"
  534.    extern UINT        GetAtomName(ATOM, LPSTR, CINT) kernel32 ;
  535.                    from "GetAtomNameA"
  536.  
  537.    extern UINT        GetDriveType( LPCSTR ) kernel32 ;
  538.                    from "GetDriveTypeA"
  539.  
  540.    extern UINT        GetSystemDirectory(LPSTR, UINT) kernel32 ;
  541.                    from "GetSystemDirectoryA"
  542.    extern DWORD       GetTempPath(DWORD, LPSTR) kernel32 ;
  543.                    from "GetTempPathA"
  544.    extern UINT        GetTempFileName(LPCSTR, LPCSTR, UINT, LPSTR) kernel32 ;
  545.                    from "GetTempFileNameA"
  546.    extern UINT        GetWindowsDirectory(LPSTR, UINT) kernel32 ;
  547.                    from "GetWindowsDirectoryA"
  548.    extern BOOL        SetCurrentDirectory( LPCSTR ) kernel32 ;
  549.                    from "SetCurrentDirectoryA"
  550.    extern DWORD       GetCurrentDirectory(DWORD, LPSTR) kernel32 ;
  551.                    from "GetCurrentDirectoryA"
  552.    extern BOOL        GetDiskFreeSpace(LPCSTR, LPDWORD, LPDWORD, LPDWORD, ;
  553.                    LPDWORD) kernel32 ;
  554.                    from "GetDiskFreeSpaceA"
  555.    extern BOOL        CreateDirectory(LPCSTR, LPSTRUCTURE) kernel32 ;
  556.                    from "CreateDirectoryA"
  557.    extern BOOL        CreateDirectoryEx(LPCSTR, LPCSTR, LPSTRUCTURE) kernel32 ;
  558.                    from "CreateDirectoryExA"
  559.    extern BOOL        RemoveDirectory( LPCSTR ) kernel32 ;
  560.                    from "RemoveDirectoryA"
  561.    extern DWORD       GetFullPathName(LPCSTR, DWORD, LPSTR, LPSTR) kernel32 ;
  562.                    from "GetFullPathNameA"
  563.  
  564.    extern BOOL        DefineDosDevice(DWORD, LPCSTR, LPCSTR) kernel32 ;
  565.                    from "DefineDosDeviceA"
  566.    extern DWORD       QueryDosDevice(LPCSTR, LPSTR, DWORD) kernel32 ;
  567.                    from "QueryDosDeviceA"
  568.  
  569.    extern HANDLE      CreateFile(LPCSTR, DWORD, DWORD, LPSTRUCTURE, DWORD, ;
  570.                    DWORD, HANDLE) kernel32 ;
  571.                    from "CreateFileA"
  572.    extern BOOL        SetFileAttributes(LPCSTR, DWORD) kernel32 ;
  573.                    from "SetFileAttributesA"
  574.    extern DWORD       GetFileAttributes( LPCSTR ) kernel32 ;
  575.                    from "GetFileAttributesA"
  576.  
  577.    extern DWORD       GetCompressedFileSize(LPCSTR, LPDWORD) kernel32 ;
  578.                    from "GetCompressedFileSizeA"
  579.  
  580.    extern BOOL        DeleteFile( LPCSTR ) kernel32 ;
  581.                    from "DeleteFileA"
  582.    extern HANDLE      FindFirstFile(LPCSTR, LPSTRUCTURE) kernel32 ;
  583.                    from "FindFirstFileA"
  584.    extern BOOL        FindNextFile(HANDLE, LPSTRUCTURE) kernel32 ;
  585.                    from "FindNextFileA"
  586.    extern DWORD       SearchPath(LPCSTR, LPCSTR, LPCSTR, DWORD, LPSTR, ;
  587.                    CPTR) kernel32 ;
  588.                    from "SearchPathA"
  589.    extern BOOL        CopyFile(LPCSTR, LPCSTR, BOOL) kernel32 ;
  590.                    from "CopyFileA"
  591.    extern BOOL        MoveFile(LPCSTR, LPCSTR) kernel32 ;
  592.                    from "MoveFileA"
  593.    extern BOOL        MoveFileEx(LPCSTR, LPCSTR, DWORD) kernel32 ;
  594.                    from "MoveFileExA"
  595.  
  596.    extern HANDLE      CreateMailslot(LPCSTR, DWORD, DWORD, ;
  597.                    LPSTRUCTURE) kernel32 ;
  598.                    from "CreateMailslotA"
  599.    extern BOOL        GetMailslotInfo(HANDLE, LPDWORD, LPDWORD, LPDWORD, ;
  600.                    LPDWORD) kernel32
  601.    extern BOOL        SetMailslotInfo(HANDLE, DWORD) kernel32
  602.  
  603.    extern BOOL        SetVolumeLabel(LPCSTR, LPCSTR) kernel32 ;
  604.                    from "SetVolumeLabelA"
  605.  
  606.    extern VOID        SetFileApisToOEM( VOID ) kernel32
  607.    extern VOID        SetFileApisToANSI( VOID ) kernel32
  608.    extern BOOL        AreFileApisANSI( VOID ) kernel32
  609.  
  610.    extern BOOL        GetVolumeInformation(LPCSTR, LPSTR, DWORD, LPDWORD, ;
  611.                    LPDWORD, LPDWORD, LPSTR, DWORD) kernel32 ;
  612.                    from "GetVolumeInformationA"
  613.  
  614.    extern HANDLE      FindFirstChangeNotification(LPCSTR, BOOL, ;
  615.                    DWORD) kernel32 ;
  616.                    from "FindFirstChangeNotificationA"
  617.    extern BOOL        FindNextChangeNotification( HANDLE ) kernel32
  618.    extern BOOL        FindCloseChangeNotification( HANDLE ) kernel32
  619.    extern BOOL        VirtualLock(LPVOID, DWORD) kernel32
  620.    extern BOOL        VirtualUnlock(LPVOID, DWORD) kernel32
  621.  
  622.    extern CLONG       MapViewOfFileEx(HANDLE, DWORD, DWORD, DWORD, ;
  623.                    DWORD, LPVOID) kernel32
  624.  
  625.    extern BOOL        SetPriorityClass(HANDLE, DWORD) kernel32
  626.    extern DWORD       GetPriorityClass( HANDLE ) kernel32
  627.  
  628.    extern BOOL        IsBadReadPtr(LPVOID, UINT) kernel32
  629.    extern BOOL        IsBadWritePtr(LPVOID, UINT) kernel32
  630.    extern BOOL        IsBadHugeReadPtr(LPVOID, UINT) kernel32
  631.    extern BOOL        IsBadHugeWritePtr(LPVOID, UINT) kernel32
  632.    extern BOOL        IsBadCodePtr( FARPROC ) kernel32
  633.    extern BOOL        IsBadStringPtr(LPCSTR, UINT) kernel32 ;
  634.                       from "IsBadStringPtrA"
  635.  
  636.  
  637.    extern BOOL        BuildCommDCB(LPCSTR, LPSTRUCTURE) kernel32 ;
  638.                       from "BuildCommDCBA"
  639.    extern BOOL        BuildCommDCBAndTimeouts(LPCSTR, LPSTRUCTURE, ;
  640.                       LPSTRUCTURE) kernel32 ;
  641.                       from "BuildCommDCBAndTimeoutsA"
  642.    extern BOOL        CommConfigDialog(LPCSTR, HWND, LPSTRUCTURE) kernel32 ;
  643.                       from "CommConfigDialogA"
  644.  
  645.    extern BOOL        GetDefaultCommConfig(LPCSTR, LPSTRUCTURE, ;
  646.                       LPDWORD) kernel32 ;
  647.                       from "GetDefaultCommConfigA"
  648.  
  649.    extern BOOL        SetDefaultCommConfig(LPCSTR, LPSTRUCTURE, ;
  650.                       DWORD) kernel32 ;
  651.                       from "SetDefaultCommConfigA"
  652.    extern BOOL        GetComputerName(LPSTR, LPDWORD) kernel32 ;
  653.                       from "GetComputerNameA"
  654.    extern BOOL        SetComputerName( LPCSTR ) kernel32 ;
  655.                       from "SetComputerNameA"
  656.  
  657.    //
  658.    // Performance counter API's
  659.    //
  660.    extern BOOL        QueryPerformanceCounter( LPSTRUCTURE ) kernel32
  661.    extern BOOL        QueryPerformanceFrequency( LPSTRUCTURE ) kernel32
  662.  
  663.    extern BOOL        GetVersionEx( LPSTRUCTURE ) kernel32 ;
  664.                    from "GetVersionExA"
  665.  
  666.    extern BOOL        GetSystemPowerStatus( LPSTRUCTURE ) kernel32
  667.    extern BOOL        SetSystemPowerState( BOOL, BOOL ) kernel32
  668. return null
  669.  
  670. function ExternIniFile
  671.    extern UINT        GetProfileInt(LPCSTR, LPCSTR, CINT) kernel32 ;
  672.                       from "GetProfileIntA"
  673.    extern DWORD       GetProfileString(LPCSTR, LPCSTR, LPCSTR, LPSTR, ;
  674.                    DWORD) kernel32 ;
  675.                    from "GetProfileStringA"
  676.    extern BOOL        WriteProfileString(LPCSTR, LPCSTR, LPCSTR) kernel32 ;
  677.                    from "WriteProfileStringA"
  678.    extern DWORD       GetProfileSection(LPCSTR, LPSTR, DWORD) kernel32 ;
  679.                    from "GetProfileSectionA"
  680.    extern BOOL        WriteProfileSection(LPCSTR, LPCSTR) kernel32 ;
  681.                    from "WriteProfileSectionA"
  682.  
  683.    extern UINT        GetPrivateProfileInt(LPCSTR, LPCSTR, CINT, LPCSTR) kernel32 ;
  684.                    from "GetPrivateProfileIntA"
  685.    extern DWORD       GetPrivateProfileString(LPCSTR, LPCSTR, LPCSTR, LPSTR, ;
  686.                    DWORD, LPCSTR) kernel32 ;
  687.                    from "GetPrivateProfileStringA"
  688.    extern BOOL        WritePrivateProfileString(LPCSTR, LPCSTR, LPCSTR, ;
  689.                    LPCSTR) kernel32 ;
  690.                    from "WritePrivateProfileStringA"
  691.    extern DWORD       GetPrivateProfileSection(LPCSTR, LPSTR, DWORD, ;
  692.                    LPCSTR) kernel32 ;
  693.                    from "GetPrivateProfileSectionA"
  694.    extern BOOL        WritePrivateProfileSection(LPCSTR, LPCSTR, ;
  695.                    LPCSTR) kernel32 ;
  696.                    from "WritePrivateProfileSectionA"
  697.    extern DWORD       GetPrivateProfileSectionNames(LPSTR, DWORD, ;
  698.                    LPCSTR) kernel32 ;
  699.                    from "GetPrivateProfileSectionNamesA"
  700.    extern BOOL        GetPrivateProfileStruct(LPCSTR, LPCSTR, LPVOID, UINT, ;
  701.                    LPCSTR) kernel32 ;
  702.                    from "GetPrivateProfileStructA"
  703.    extern BOOL        WritePrivateProfileStruct(LPCSTR, LPCSTR, LPVOID, UINT, ;
  704.                    LPCSTR) kernel32 ;
  705.                    from "WritePrivateProfileStructA"
  706. return null
  707.  
  708. function ExternADVAPI
  709.    #define PSID   PVOID
  710.    #define LPPSID PVOID
  711.  
  712.    extern BOOL        IsTextUnicode(LPVOID, CINT, LPINT) advapi32
  713.  
  714.    //
  715.    // Event logging APIs
  716.    //
  717.  
  718.    extern BOOL        ClearEventLog(HANDLE, LPCSTR) advapi32 ;
  719.                    from "ClearEventLogA"
  720.    extern BOOL        BackupEventLog(HANDLE, LPCSTR) advapi32 ;
  721.                    from "BackupEventLogA"
  722.    extern BOOL        CloseEventLog( HANDLE ) advapi32
  723.    extern BOOL        DeregisterEventSource( HANDLE ) advapi32
  724.    extern BOOL        NotifyChangeEventLog(HANDLE, HANDLE) advapi32
  725.    extern BOOL        GetNumberOfEventLogRecords(HANDLE, PDWORD) advapi32
  726.    extern BOOL        GetOldestEventLogRecord(HANDLE, PDWORD) advapi32
  727.    extern HANDLE      OpenEventLog(LPCSTR, LPCSTR) advapi32 ;
  728.                    from "OpenEventLogA"
  729.    extern HANDLE      RegisterEventSource(LPCSTR, LPCSTR) advapi32 ;
  730.                    from "RegisterEventSourceA"
  731.    extern HANDLE      OpenBackupEventLog(LPCSTR, LPCSTR) advapi32 ;
  732.                    from "OpenBackupEventLogA"
  733.    extern BOOL        ReadEventLog(HANDLE, DWORD, DWORD, LPVOID, DWORD, ;
  734.                    DWORD, DWORD) advapi32 ;
  735.                    from "ReadEventLogA"
  736.    extern BOOL        ReportEvent(HANDLE, WORD, WORD, DWORD, PSID, WORD, ;
  737.                    DWORD, CPTR, LPVOID) advapi32 ;
  738.                    from "ReportEventA"
  739.    //
  740.    // Security APIs
  741.    //
  742.  
  743.    extern BOOL        DuplicateToken(HANDLE, ENUM, PHANDLE) advapi32
  744.    extern BOOL        GetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, ;
  745.                    LPSTRUCTURE, DWORD, LPDWORD) advapi32
  746.    extern BOOL        ImpersonateNamedPipeClient( HANDLE ) advapi32
  747.    extern BOOL        ImpersonateSelf( ENUM ) advapi32
  748.    extern BOOL        RevertToSelf ( VOID ) advapi32
  749.    extern BOOL        SetThreadToken(PHANDLE, HANDLE) advapi32
  750.    extern BOOL        AccessCheck(LPSTRUCTURE, HANDLE, DWORD, PSTRUCTURE, ;
  751.                    PSTRUCTURE, LPDWORD, LPDWORD, LPBOOL) advapi32
  752.    extern BOOL        OpenProcessToken(HANDLE, DWORD, PHANDLE) advapi32
  753.    extern BOOL        OpenThreadToken(HANDLE, DWORD, BOOL, PHANDLE) advapi32
  754.    extern BOOL        GetTokenInformation(HANDLE, ENUM, LPVOID, DWORD, ;
  755.                    PDWORD) advapi32
  756.    extern BOOL        SetTokenInformation(HANDLE, ENUM, LPVOID, DWORD) advapi32
  757.    extern BOOL        AdjustTokenPrivileges(HANDLE, BOOL, LPSTRUCTURE, DWORD, ;
  758.                    LPSTRUCTURE, PDWORD) advapi32
  759.    extern BOOL        AdjustTokenGroups(HANDLE, BOOL, LPSTRUCTURE, DWORD, ;
  760.                    LPSTRUCTURE, PDWORD) advapi32
  761.    extern BOOL        PrivilegeCheck(HANDLE, LPSTRUCTURE, LPBOOL) advapi32
  762.    extern BOOL        AccessCheckAndAuditAlarm(LPCSTR, LPVOID, LPSTR, LPSTR, ;
  763.                    LPSTRUCTURE, DWORD, LPSTRUCTURE, BOOL, LPDWORD, LPBOOL, ;
  764.                    LPBOOL) advapi32 ;
  765.                    from "AccessCheckAndAuditAlarmA"
  766.    extern BOOL        ObjectOpenAuditAlarm(LPCSTR, LPVOID, LPSTR, LPSTR, ;
  767.                    LPSTRUCTURE, HANDLE, DWORD, DWORD, LPSTRUCTURE, BOOL, ;
  768.                    BOOL, LPBOOL) advapi32 ;
  769.                    from "ObjectOpenAuditAlarmA"
  770.    extern BOOL        ObjectPrivilegeAuditAlarm(LPCSTR, LPVOID, HANDLE, ;
  771.                    DWORD, LPSTRUCTURE, BOOL) advapi32 ;
  772.                    from "ObjectPrivilegeAuditAlarmA"
  773.    extern BOOL        ObjectCloseAuditAlarm(LPCSTR, LPVOID, BOOL) advapi32 ;
  774.                    from "ObjectCloseAuditAlarmA"
  775.    extern BOOL        PrivilegedServiceAuditAlarm(LPCSTR, LPCSTR, HANDLE, ;
  776.                    LPSTRUCTURE, BOOL) advapi32 ;
  777.                    from "PrivilegedServiceAuditAlarmA"
  778.    extern BOOL        IsValidSid( PSID ) advapi32
  779.    extern BOOL        EqualSid (PSID, PSID) advapi32
  780.    extern BOOL        EqualPrefixSid(PSID, PSID) advapi32
  781.    extern DWORD       GetSidLengthRequired( UCHAR ) advapi32
  782.    extern BOOL        AllocateAndInitializeSid(LPSTRUCTURE, BYTE, DWORD, ;
  783.                    DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, ;
  784.                    LPPSID) advapi32
  785.    extern CSTRING     FreeSid( PSID ) advapi32
  786.    extern BOOL        InitializeSid(PSID, LPSTRUCTURE, BYTE) advapi32
  787.    extern DWORD       GetSidIdentifierAuthority( PSID ) advapi32
  788.    extern PDWORD      GetSidSubAuthority(PSID, DWORD) advapi32
  789.    extern CSTRING     GetSidSubAuthorityCount( PSID ) advapi32
  790.    extern DWORD       GetLengthSid ( PSID ) advapi32
  791.    extern BOOL        CopySid(DWORD, PSID, PSID) advapi32
  792.    extern BOOL        AreAllAccessesGranted(DWORD, DWORD) advapi32
  793.    extern BOOL        AreAnyAccessesGranted(DWORD, DWORD) advapi32
  794.    extern VOID        MapGenericMask(PDWORD, LPSTRUCTURE) advapi32
  795.    extern BOOL        IsValidAcl( PSTRUCTURE ) advapi32
  796.    extern BOOL        InitializeAcl(PSTRUCTURE, DWORD, DWORD) advapi32
  797.    extern BOOL        GetAclInformation(PSTRUCTURE, LPVOID, DWORD, ;
  798.                    ENUM) advapi32
  799.    extern BOOL        SetAclInformation(PSTRUCTURE, LPVOID, DWORD, ;
  800.                    ENUM) advapi32
  801.    extern BOOL        AddAce(PSTRUCTURE, DWORD, DWORD, LPVOID, DWORD) advapi32
  802.    extern BOOL        DeleteAce(PSTRUCTURE, DWORD) advapi32
  803.    extern BOOL        GetAce(PSTRUCTURE, DWORD, LPVOID) advapi32
  804.    extern BOOL        AddAccessAllowedAce(PSTRUCTURE, DWORD, DWORD, ;
  805.                    PSID) advapi32
  806.    extern BOOL        AddAccessDeniedAce(PSTRUCTURE, DWORD, DWORD, ;
  807.                    PSID) advapi32
  808.    extern BOOL        AddAuditAccessAce(PSTRUCTURE, DWORD, DWORD, PSID, BOOL, ;
  809.                    BOOL) advapi32
  810.    extern BOOL        FindFirstFreeAce(PSTRUCTURE, LPVOID) advapi32
  811.    extern BOOL        InitializeSecurityDescriptor(LPSTRUCTURE, DWORD) advapi32
  812.    extern BOOL        IsValidSecurityDescriptor(LPSTRUCTURE) advapi32
  813.    extern DWORD       GetSecurityDescriptorLength(LPSTRUCTURE) advapi32
  814.    extern BOOL        GetSecurityDescriptorControl(LPSTRUCTURE, LPSTRUCTURE, ;
  815.                    LPDWORD) advapi32
  816.    extern BOOL        SetSecurityDescriptorDacl(LPSTRUCTURE, BOOL, PSTRUCTURE, ;
  817.                    BOOL) advapi32
  818.    extern BOOL        GetSecurityDescriptorDacl(LPSTRUCTURE, LPBOOL, ;
  819.                    CPTR, LPBOOL) advapi32
  820.    extern BOOL        SetSecurityDescriptorSacl(LPSTRUCTURE, BOOL, PSTRUCTURE, ;
  821.                    BOOL) advapi32
  822.    extern BOOL        GetSecurityDescriptorSacl(LPSTRUCTURE, LPBOOL, ;
  823.                    CPTR, LPBOOL) advapi32
  824.    extern BOOL        SetSecurityDescriptorOwner(LPSTRUCTURE, PSID, ;
  825.                    BOOL) advapi32
  826.    extern BOOL        GetSecurityDescriptorOwner(LPSTRUCTURE, LPPSID, ;
  827.                    LPBOOL) advapi32
  828.    extern BOOL        SetSecurityDescriptorGroup(LPSTRUCTURE, PSID, ;
  829.                    BOOL) advapi32
  830.    extern BOOL        GetSecurityDescriptorGroup(LPSTRUCTURE, LPPSID, ;
  831.                    LPBOOL) advapi32
  832.    extern BOOL        CreatePrivateObjectSecurity(LPSTRUCTURE, LPSTRUCTURE, ;
  833.                    CPTR, BOOL, HANDLE, LPSTRUCTURE) advapi32
  834.    extern BOOL        SetPrivateObjectSecurity(SECURITY_INFORMATION, ;
  835.                    LPSTRUCTURE, CPTR, LPSTRUCTURE, HANDLE) advapi32
  836.    extern BOOL        GetPrivateObjectSecurity(LPSTRUCTURE, ;
  837.                    SECURITY_INFORMATION, LPSTRUCTURE, ;
  838.                    DWORD, PDWORD) advapi32
  839.    extern BOOL        DestroyPrivateObjectSecurity(LPSTRUCTURE) advapi32
  840.    extern BOOL        MakeSelfRelativeSD(LPSTRUCTURE, LPSTRUCTURE, ;
  841.                    LPDWORD) advapi32
  842.    extern BOOL        MakeAbsoluteSD(LPSTRUCTURE, LPSTRUCTURE, LPDWORD, ;
  843.                    PSTRUCTURE, LPDWORD, PSTRUCTURE, LPDWORD, PSID, ;
  844.                    LPDWORD, PSID, LPDWORD) advapi32
  845.    extern BOOL        SetFileSecurity(LPCSTR, SECURITY_INFORMATION, ;
  846.                    LPSTRUCTURE) advapi32 ;
  847.                    from "SetFileSecurityA"
  848.    extern BOOL        GetFileSecurity(LPCSTR, SECURITY_INFORMATION, ;
  849.                    LPSTRUCTURE, DWORD, LPDWORD) advapi32 ;
  850.                    from "GetFileSecurityA"
  851.    extern BOOL        SetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, ;
  852.                    LPSTRUCTURE) advapi32
  853.  
  854.    extern BOOL        LookupAccountSid(LPCSTR, PSID, LPSTR, LPDWORD, ;
  855.                    LPSTR, LPDWORD, LPSTRUCTURE) advapi32 ;
  856.                    from "LookupAccountSidA"
  857.    extern BOOL        LookupAccountName(LPCSTR, LPCSTR, PSID, LPDWORD, LPSTR, ;
  858.                    LPDWORD, LPSTRUCTURE) advapi32 ;
  859.                    from "LookupAccountNameA"
  860.    extern BOOL        LookupPrivilegeValue(LPCSTR, LPCSTR, ;
  861.                    LPSTRUCTURE) advapi32 ;
  862.                    from "LookupPrivilegeValueA"
  863.    extern BOOL        LookupPrivilegeName(LPCSTR, LPSTRUCTURE, LPSTR, ;
  864.                    LPDWORD) advapi32 ;
  865.                    from "LookupPrivilegeNameA"
  866.    extern BOOL        LookupPrivilegeDisplayName(LPCSTR, LPCSTR, LPSTR, ;
  867.                    LPDWORD, LPDWORD) advapi32 ;
  868.                    from "LookupPrivilegeDisplayNameA"
  869.    extern BOOL        AllocateLocallyUniqueId( LPSTRUCTURE ) advapi32
  870.  
  871.  
  872.    extern BOOL        GetUserName(LPSTR, LPDWORD) advapi32 ;
  873.                    from "GetUserNameA"
  874.  
  875.    //
  876.    // Logon Support APIs
  877.    //
  878.    extern BOOL        LogonUser(LPSTR, LPSTR, LPSTR, DWORD, DWORD, ;
  879.                    PHANDLE) advapi32 ;
  880.                    from "LogonUserA"
  881.    extern BOOL        ImpersonateLoggedOnUser( HANDLE ) advapi32
  882.    extern BOOL        CreateProcessAsUser(HANDLE, LPCSTR, LPSTR, ;
  883.                    LPSTRUCTURE, LPSTRUCTURE, BOOL, DWORD, LPVOID, ;
  884.                    LPCSTR, LPSTRUCTURE) advapi32 ;
  885.                    from "CreateProcessAsUserA"
  886. return null
  887.  
  888. function ExternGDI
  889.    //------------------------------------------------------------------     
  890.    //
  891.    // Adapted from wingdi.h 
  892.    // GDI procedure declarations, constant definitions and macros
  893.    // 
  894.    //------------------------------------------------------------------      
  895.  
  896.    extern CINT        AddFontResource(LPCSTR) gdi32 ;
  897.                    from "AddFontResourceA"
  898.  
  899.    extern BOOL        AnimatePalette(HPALETTE, UINT, UINT, LPSTRUCTURE) gdi32
  900.    extern BOOL        Arc(HDC, CINT, CINT, CINT, CINT, CINT, CINT, ;
  901.                    CINT, CINT) gdi32
  902.    extern BOOL        BitBlt(HDC, CINT, CINT, CINT, CINT, HDC, CINT, ;
  903.                    CINT, DWORD) gdi32
  904.    extern BOOL        CancelDC(HDC) gdi32
  905.    extern BOOL        Chord(HDC, CINT, CINT, CINT, CINT, CINT, CINT, ;
  906.                    CINT, CINT) gdi32
  907.    extern CINT        ChoosePixelFormat(HDC, LPSTRUCTURE) gdi32
  908.    extern HMETAFILE   CloseMetaFile(HDC) gdi32
  909.    extern CINT        CombineRgn(HRGN, HRGN, HRGN, CINT) gdi32
  910.    extern HMETAFILE   CopyMetaFile(HMETAFILE, LPCSTR) gdi32 ;
  911.                    from "CopyMetaFileA"
  912.    extern HBITMAP     CreateBitmap(CINT, CINT, UINT, UINT, CPTR) gdi32
  913.    extern HBITMAP     CreateBitmapIndirect(LPSTRUCTURE) gdi32
  914.    extern HBRUSH      CreateBrushIndirect(LPSTRUCTURE) gdi32
  915.    extern HBITMAP     CreateCompatibleBitmap(HDC, CINT, CINT) gdi32
  916.    extern HBITMAP     CreateDiscardableBitmap(HDC, CINT, CINT) gdi32
  917.    extern HDC         CreateCompatibleDC(HDC) gdi32
  918.    extern HDC         CreateDC(LPCSTR, LPCSTR , LPCSTR , LPSTRUCTURE) gdi32 ;
  919.                    from "CreateDCA"
  920.    extern HBITMAP     CreateDIBitmap(HDC, LPSTRUCTURE, DWORD, LPSTRUCTURE, ;
  921.                    LPSTRUCTURE, UINT) gdi32
  922.    extern HBRUSH      CreateDIBPatternBrush(HGLOBAL, UINT) gdi32
  923.    extern HBRUSH      CreateDIBPatternBrushPt(CPTR, UINT) gdi32
  924.    extern HRGN        CreateEllipticRgn(CINT, CINT, CINT, CINT) gdi32
  925.    extern HRGN        CreateEllipticRgnIndirect(LPSTRUCTURE) gdi32
  926.    extern HFONT       CreateFontIndirect(LPSTRUCTURE) gdi32 ;
  927.                    from "CreateFontIndirectA"
  928.    extern HFONT       CreateFont(CINT, CINT, CINT, CINT, CINT, DWORD, ;
  929.                    DWORD, DWORD, DWORD, DWORD, DWORD, ;
  930.                    DWORD, DWORD, LPCSTR) gdi32 ;
  931.                    from "CreateFontA"
  932.  
  933.    extern HBRUSH      CreateHatchBrush(CINT, COLORREF) gdi32
  934.    extern HDC         CreateIC(LPCSTR, LPCSTR , LPCSTR , LPSTRUCTURE) gdi32 ;
  935.                    from "CreateICA"
  936.    extern HDC         CreateMetaFile(LPCSTR) gdi32 ;
  937.                    from "CreateMetaFileA"
  938.  
  939.    extern HPALETTE    CreatePalette(LPSTRUCTURE) gdi32
  940.    extern HPEN        CreatePen(CINT, CINT, COLORREF) gdi32
  941.    extern HPEN        CreatePenIndirect(LPSTRUCTURE) gdi32
  942.    extern HRGN        CreatePolyPolygonRgn(LPSTRUCTURE, PINT, CINT, CINT) gdi32
  943.    extern HBRUSH      CreatePatternBrush(HBITMAP) gdi32
  944.    extern HRGN        CreateRectRgn(CINT, CINT, CINT, CINT) gdi32
  945.    extern HRGN        CreateRectRgnIndirect(LPSTRUCTURE) gdi32
  946.    extern HRGN        CreateRoundRectRgn(CINT, CINT, CINT, CINT, CINT, CINT) gdi32
  947.    extern BOOL        CreateScalableFontResource(DWORD, LPCSTR, LPCSTR, ;
  948.                    LPCSTR) gdi32 ;
  949.                    from "CreateScalableFontResourceA"
  950.    extern HBRUSH      CreateSolidBrush(COLORREF) gdi32
  951.  
  952.    extern BOOL        DeleteDC(HDC) gdi32
  953.    extern BOOL        DeleteMetaFile(HMETAFILE) gdi32
  954.    extern BOOL        DeleteObject(HGDIOBJ) gdi32
  955.    extern CINT        DescribePixelFormat(HDC, CINT, UINT, LPSTRUCTURE) gdi32
  956.  
  957.    extern CINT        DeviceCapabilities(LPCSTR, LPCSTR, WORD, ;
  958.                    LPSTR, LPSTRUCTURE) winspool.drv ;
  959.                    from "DeviceCapabilitiesA"
  960.  
  961.    extern CINT        DrawEscape(HDC, CINT, CINT, LPCSTR) gdi32
  962.    extern BOOL        Ellipse(HDC, CINT, CINT, CINT, CINT) gdi32
  963.  
  964.    extern CINT        EnumFontFamiliesEx(HDC, LPSTRUCTURE, FARPROC, ;
  965.                    LPARAM, DWORD) gdi32 ;
  966.                    from "EnumFontFamiliesExA"
  967.    extern CINT        EnumFontFamilies(HDC, LPCSTR, FARPROC, LPARAM) gdi32 ;
  968.                    from "EnumFontFamiliesA"
  969.    extern CINT        EnumFonts(HDC, LPCSTR, FARPROC, LPARAM) gdi32 ;
  970.                    from "EnumFontsA"
  971.    extern CINT        EnumObjects(HDC, CINT, FARPROC, LPVOID) gdi32
  972.  
  973.  
  974.    extern BOOL        EqualRgn(HRGN, HRGN) gdi32
  975.    extern CINT        Escape(HDC, CINT, CINT, LPCSTR, LPVOID) gdi32
  976.    extern CINT        ExtEscape(HDC, CINT, CINT, LPCSTR, CINT, LPSTR) gdi32
  977.    extern CINT        ExcludeClipRect(HDC, CINT, CINT, CINT, CINT) gdi32
  978.    extern HRGN        ExtCreateRegion(LPSTRUCTURE, DWORD, LPSTRUCTURE) gdi32
  979.    extern BOOL        ExtFloodFill(HDC, CINT, CINT, COLORREF, UINT) gdi32
  980.    extern BOOL        FillRgn(HDC, HRGN, HBRUSH) gdi32
  981.    extern BOOL        FloodFill(HDC, CINT, CINT, COLORREF) gdi32
  982.    extern BOOL        FrameRgn(HDC, HRGN, HBRUSH, CINT, CINT) gdi32
  983.    extern CINT        GetROP2(HDC) gdi32
  984.    extern BOOL        GetAspectRatioFilterEx(HDC, LPSTRUCTURE) gdi32
  985.    extern COLORREF    GetBkColor(HDC) gdi32
  986.    extern CINT        GetBkMode(HDC) gdi32
  987.    extern LONG        GetBitmapBits(HBITMAP, LONG, LPVOID) gdi32
  988.    extern BOOL        GetBitmapDimensionEx(HBITMAP, LPSTRUCTURE) gdi32
  989.    extern UINT        GetBoundsRect(HDC, LPSTRUCTURE, UINT) gdi32
  990.  
  991.    extern BOOL        GetBrushOrgEx(HDC, LPSTRUCTURE) gdi32
  992.  
  993.    extern BOOL        GetCharWidth(HDC, UINT, UINT, LPINT) gdi32 ;
  994.                    from "GetCharWidthA"
  995.    extern BOOL        GetCharWidth32(HDC, UINT, UINT, LPINT) gdi32 ;
  996.                    from "GetCharWidth32A"
  997.    extern BOOL        GetCharWidthFloat(HDC, UINT, UINT, PFLOAT) gdi32 ;
  998.                    from "GetCharWidthFloatA"
  999.  
  1000.    extern BOOL        GetCharABCWidths(HDC, UINT, UINT, LPSTRUCTURE) gdi32 ;
  1001.                    from "GetCharABCWidthsA"
  1002.    extern BOOL        GetCharABCWidthsFloat(HDC, UINT, UINT, LPSTRUCTURE) gdi32 ;
  1003.                    from "GetCharABCWidthsFloatA"
  1004.  
  1005.    extern CINT        GetClipBox(HDC, LPRECT) gdi32
  1006.    extern CINT        GetClipRgn(HDC, HRGN) gdi32
  1007.    extern CINT        GetMetaRgn(HDC, HRGN) gdi32
  1008.    extern HGDIOBJ     GetCurrentObject(HDC, UINT) gdi32
  1009.    extern BOOL        GetCurrentPositionEx(HDC, LPSTRUCTURE) gdi32
  1010.    extern CINT        GetDeviceCaps(HDC, CINT) gdi32
  1011.    extern CINT        GetDIBits(HDC, HBITMAP, UINT, UINT, LPVOID, LPSTRUCTURE, UINT) gdi32
  1012.    extern DWORD       GetFontData(HDC, DWORD, DWORD, LPVOID, DWORD) gdi32
  1013.    extern DWORD       GetGlyphOutlineA(HDC, UINT, UINT, LPSTRUCTURE, DWORD, LPVOID, LPSTRUCTURE) gdi32
  1014.    extern CINT        GetGraphicsMode(HDC) gdi32
  1015.    extern CINT        GetMapMode(HDC) gdi32
  1016.    extern UINT        GetMetaFileBitsEx(HMETAFILE, UINT, LPVOID) gdi32
  1017.    extern HMETAFILE   GetMetaFile(LPCSTR) gdi32 ;
  1018.                    from "GetMetaFileA"
  1019.  
  1020.    extern COLORREF    GetNearestColor(HDC, COLORREF) gdi32
  1021.    extern UINT        GetNearestPaletteIndex(HPALETTE, COLORREF) gdi32
  1022.    extern DWORD       GetObjectType(HGDIOBJ) gdi32
  1023.  
  1024.    extern UINT        GetOutlineTextMetrics(HDC, UINT, LPSTRUCTURE) gdi32 ;
  1025.                    from "GetOutlineTextMetricsA"
  1026.  
  1027.    extern UINT        GetPaletteEntries(HPALETTE, UINT, UINT, LPSTRUCTURE) gdi32
  1028.    extern COLORREF    GetPixel(HDC, CINT, CINT) gdi32
  1029.    extern CINT        GetPixelFormat(HDC) gdi32
  1030.    extern CINT        GetPolyFillMode(HDC) gdi32
  1031.    extern BOOL        GetRasterizerCaps(LPSTRUCTURE, UINT) gdi32
  1032.    extern DWORD       GetRegionData(HRGN, DWORD, LPSTRUCTURE) gdi32
  1033.    extern CINT        GetRgnBox(HRGN, LPSTRUCTURE) gdi32
  1034.    extern HGDIOBJ     GetStockObject(CINT) gdi32
  1035.    extern CINT        GetStretchBltMode(HDC) gdi32
  1036.    extern UINT        GetSystemPaletteEntries(HDC, UINT, UINT, LPSTRUCTURE) gdi32
  1037.    extern UINT        GetSystemPaletteUse(HDC) gdi32
  1038.    extern CINT        GetTextCharacterExtra(HDC) gdi32
  1039.    extern UINT        GetTextAlign(HDC) gdi32
  1040.    extern COLORREF    GetTextColor(HDC) gdi32
  1041.  
  1042.    extern BOOL        GetTextExtentPoint(HDC, LPCSTR, CINT, LPSTRUCTURE) gdi32 ;
  1043.                    from "GetTextExtentPointA"
  1044.  
  1045.    extern BOOL        GetTextExtentPoint32(HDC, LPCSTR, CINT, LPSTRUCTURE) gdi32 ;
  1046.                    from "GetTextExtentPoint32A"
  1047.  
  1048.    extern BOOL        GetTextExtentExPoint(HDC, LPCSTR, CINT, CINT, LPINT, ;
  1049.                    LPINT, LPSTRUCTURE) gdi32 ;
  1050.                    from "GetTextExtentExPointA"
  1051.  
  1052.    extern CINT        GetTextCharset(HDC) gdi32
  1053.    extern CINT        GetTextCharsetInfo(HDC, LPSTRUCTURE, DWORD) gdi32
  1054.    extern BOOL        TranslateCharsetInfo( LPDWORD, LPSTRUCTURE, DWORD) gdi32
  1055.    extern DWORD       GetFontLanguageInfo( HDC ) gdi32
  1056.    extern DWORD       GetCharacterPlacement(HDC, LPCSTR, CINT, CINT, ;
  1057.                    LPSTRUCTURE, DWORD) gdi32 ;
  1058.                    from "GetCharacterPlacementA"
  1059.  
  1060.    extern BOOL        GetViewportExtEx(HDC, LPSTRUCTURE) gdi32
  1061.    extern BOOL        GetViewportOrgEx(HDC, LPSTRUCTURE) gdi32
  1062.    extern BOOL        GetWindowExtEx(HDC, LPSTRUCTURE) gdi32
  1063.    extern BOOL        GetWindowOrgEx(HDC, LPSTRUCTURE) gdi32
  1064.  
  1065.    extern CINT        IntersectClipRect(HDC, CINT, CINT, CINT, CINT) gdi32
  1066.    extern BOOL        InvertRgn(HDC, HRGN) gdi32
  1067.    extern BOOL        LineDDA(CINT, CINT, CINT, CINT, FARPROC, LPARAM) gdi32
  1068.    extern BOOL        LineTo(HDC, CINT, CINT) gdi32
  1069.    extern BOOL        MaskBlt(HDC, CINT, CINT, CINT, CINT, ;
  1070.                    HDC, CINT, CINT, HBITMAP, CINT, CINT, DWORD) gdi32
  1071.    extern BOOL        PlgBlt(HDC, LPSTRUCTURE, HDC, CINT, CINT, CINT, ;
  1072.                    CINT, HBITMAP, CINT, CINT) gdi32
  1073.  
  1074.    extern CINT        OffsetClipRgn(HDC, CINT, CINT) gdi32
  1075.    extern CINT        OffsetRgn(HRGN, CINT, CINT) gdi32
  1076.    extern BOOL        PatBlt(HDC, CINT, CINT, CINT, CINT, DWORD) gdi32
  1077.    extern BOOL        Pie(HDC, CINT, CINT, CINT, CINT, CINT, CINT, ;
  1078.                    CINT, CINT) gdi32
  1079.    extern BOOL        PlayMetaFile(HDC, HMETAFILE) gdi32
  1080.    extern BOOL        PaintRgn(HDC, HRGN) gdi32
  1081.    extern BOOL        PolyPolygon(HDC, LPSTRUCTURE, PINT, CINT) gdi32
  1082.    extern BOOL        PtInRegion(HRGN, CINT, CINT) gdi32
  1083.    extern BOOL        PtVisible(HDC, CINT, CINT) gdi32
  1084.    extern BOOL        RectInRegion(HRGN, LPSTRUCTURE) gdi32
  1085.    extern BOOL        RectVisible(HDC, LPSTRUCTURE) gdi32
  1086.    extern BOOL        Rectangle(HDC, CINT, CINT, CINT, CINT) gdi32
  1087.    extern BOOL        RestoreDC(HDC, CINT) gdi32
  1088.    extern HDC         ResetDC(HDC, LPSTRUCTURE) gdi32 ;
  1089.                    from "ResetDCA"
  1090.  
  1091.    extern UINT        RealizePalette(HDC) gdi32
  1092.    extern BOOL        RemoveFontResource(LPCSTR) gdi32 ;
  1093.                    from "RemoveFontResourceA"
  1094.    extern BOOL        RoundRect(HDC, CINT, CINT, CINT, CINT, CINT, CINT) gdi32
  1095.    extern BOOL        ResizePalette(HPALETTE, UINT) gdi32
  1096.  
  1097.    extern CINT        SaveDC(HDC) gdi32
  1098.    extern CINT        SelectClipRgn(HDC, HRGN) gdi32
  1099.    extern CINT        ExtSelectClipRgn(HDC, HRGN, CINT) gdi32
  1100.    extern CINT        SetMetaRgn(HDC) gdi32
  1101.    extern HGDIOBJ     SelectObject(HDC, HGDIOBJ) gdi32
  1102.    extern HPALETTE    SelectPalette(HDC, HPALETTE, BOOL) gdi32
  1103.    extern COLORREF    SetBkColor(HDC, COLORREF) gdi32
  1104.    extern CINT        SetBkMode(HDC, CINT) gdi32
  1105.    extern LONG        SetBitmapBits(HBITMAP, DWORD, CPTR) gdi32
  1106.  
  1107.    extern UINT        SetBoundsRect(HDC, LPSTRUCTURE, UINT) gdi32
  1108.    extern CINT        SetDIBits(HDC, HBITMAP, UINT, UINT, LPSTRUCTURE, ;
  1109.                    LPSTRUCTURE, UINT) gdi32
  1110.    extern CINT        SetDIBitsToDevice(HDC, CINT, CINT, DWORD, DWORD, CINT, ;
  1111.                    CINT, UINT, UINT, CPTR, LPSTRUCTURE, UINT) gdi32
  1112.    extern DWORD       SetMapperFlags(HDC, DWORD) gdi32
  1113.    extern CINT        SetGraphicsMode(HDC, CINT) gdi32
  1114.    extern CINT        SetMapMode(HDC, CINT) gdi32
  1115.    extern HMETAFILE   SetMetaFileBitsEx(UINT, PBYTE) gdi32
  1116.    extern UINT        SetPaletteEntries(HPALETTE, UINT, UINT, LPSTRUCTURE) gdi32
  1117.    extern COLORREF    SetPixel(HDC, CINT, CINT, COLORREF) gdi32
  1118.    extern BOOL        SetPixelV(HDC, CINT, CINT, COLORREF) gdi32
  1119.    extern BOOL        SetPixelFormat(HDC, CINT, LPSTRUCTURE) gdi32
  1120.    extern CINT        SetPolyFillMode(HDC, CINT) gdi32
  1121.    extern BOOL        StretchBlt(HDC, CINT, CINT, CINT, CINT, HDC, CINT, ;
  1122.                    CINT, CINT, CINT, DWORD) gdi32
  1123.    extern BOOL        SetRectRgn(HRGN, CINT, CINT, CINT, CINT) gdi32
  1124.    extern CINT        StretchDIBits(HDC, CINT, CINT, CINT, CINT, CINT, ;
  1125.                    CINT, CINT, CINT, LPSTRUCTURE, CPTR, LPSTRUCTURE, ;
  1126.                    UINT, DWORD) gdi32
  1127.    extern CINT        SetROP2(HDC, CINT) gdi32
  1128.    extern CINT        SetStretchBltMode(HDC, CINT) gdi32
  1129.    extern UINT        SetSystemPaletteUse(HDC, UINT) gdi32
  1130.    extern CINT        SetTextCharacterExtra(HDC, CINT) gdi32
  1131.    extern COLORREF    SetTextColor(HDC, COLORREF) gdi32
  1132.    extern UINT        SetTextAlign(HDC, UINT) gdi32
  1133.    extern BOOL        SetTextJustification(HDC, CINT, CINT) gdi32
  1134.    extern BOOL        UpdateColors(HDC) gdi32
  1135.  
  1136.    extern BOOL        PlayMetaFileRecord(HDC, LPSTRUCTURE, LPSTRUCTURE, ;
  1137.                    UINT) gdi32
  1138.    extern BOOL        EnumMetaFile(HDC, HMETAFILE, FARPROC, LPARAM) gdi32
  1139.  
  1140.    // Enhanced Metafile Function Declarations
  1141.    extern HENHMETAFILE CloseEnhMetaFile(HDC) gdi32
  1142.    extern HENHMETAFILE CopyEnhMetaFile(HENHMETAFILE, LPCSTR) gdi32 ;
  1143.                     from "CopyEnhMetaFileA"
  1144.    extern HDC         CreateEnhMetaFile(HDC, LPCSTR, LPSTRUCTURE, LPCSTR) gdi32 ;
  1145.                    from "CreateEnhMetaFileA"
  1146.    extern BOOL        DeleteEnhMetaFile(HENHMETAFILE) gdi32
  1147.    extern BOOL        EnumEnhMetaFile(HDC, HENHMETAFILE, FARPROC, LPVOID, ;
  1148.                    LPSTRUCTURE) gdi32
  1149.    extern HENHMETAFILE  GetEnhMetaFile(LPCSTR) gdi32 ;
  1150.                      from "GetEnhMetaFileA"
  1151.    extern UINT        GetEnhMetaFileBits(HENHMETAFILE, UINT, LPBYTE) gdi32
  1152.    extern UINT        GetEnhMetaFileDescription(HENHMETAFILE, UINT, ;
  1153.                    LPSTR ) gdi32 ;
  1154.                    from "GetEnhMetaFileDescriptionA"
  1155.  
  1156.    extern UINT        GetEnhMetaFileHeader(HENHMETAFILE, UINT, LPSTRUCTURE) gdi32
  1157.    extern UINT        GetEnhMetaFilePaletteEntries(HENHMETAFILE, UINT, ;
  1158.                    LPSTRUCTURE) gdi32
  1159.    extern UINT        GetWinMetaFileBits(HENHMETAFILE, UINT, LPBYTE, ;
  1160.                    CINT, HDC) gdi32
  1161.    extern BOOL        PlayEnhMetaFile(HDC, HENHMETAFILE, LPSTRUCTURE) gdi32
  1162.    extern BOOL        PlayEnhMetaFileRecord(HDC, LPSTRUCTURE, ;
  1163.                    LPSTRUCTURE, UINT) gdi32
  1164.    extern HENHMETAFILE  SetEnhMetaFileBits(UINT, LPBYTE) gdi32
  1165.    extern HENHMETAFILE  SetWinMetaFileBits(UINT, LPBYTE, HDC, LPSTRUCTURE) gdi32
  1166.    extern BOOL        GdiComment(HDC, UINT, LPBYTE) gdi32
  1167.  
  1168.    extern BOOL        GetTextMetrics(HDC, LPSTRUCTURE) gdi32 ;
  1169.                    from "GetTextMetricsA"
  1170.  
  1171.    // new GDI
  1172.  
  1173.    extern BOOL        AngleArc(HDC, CINT, CINT, DWORD, CFLOAT, CFLOAT) gdi32
  1174.    extern BOOL        PolyPolyline(HDC, LPSTRUCTURE, LPDWORD, DWORD) gdi32
  1175.    extern BOOL        GetWorldTransform(HDC, LPSTRUCTURE) gdi32
  1176.    extern BOOL        SetWorldTransform(HDC, LPSTRUCTURE) gdi32
  1177.    extern BOOL        ModifyWorldTransform(HDC, LPSTRUCTURE, DWORD) gdi32
  1178.    extern BOOL        CombineTransform(LPSTRUCTURE, LPSTRUCTURE, LPSTRUCTURE) gdi32
  1179.    extern HBITMAP     CreateDIBSection(HDC, LPSTRUCTURE, UINT, CPTR, ;
  1180.                    HANDLE, DWORD) gdi32
  1181.    extern UINT        GetDIBColorTable(HDC, UINT, UINT, LPSTRUCTURE) gdi32
  1182.    extern UINT        SetDIBColorTable(HDC, UINT, UINT, LPSTRUCTURE) gdi32
  1183.  
  1184.    extern BOOL        SetColorAdjustment(HDC, LPSTRUCTURE) gdi32
  1185.    extern BOOL        GetColorAdjustment(HDC, LPSTRUCTURE) gdi32
  1186.    extern HPALETTE    CreateHalftonePalette(HDC) gdi32
  1187.  
  1188.    extern CINT        StartDoc(HDC, LPSTRUCTURE) gdi32 ;
  1189.                    from "StartDocA"
  1190.    extern CINT        EndDoc(HDC) gdi32
  1191.    extern CINT        StartPage(HDC) gdi32
  1192.    extern CINT        EndPage(HDC) gdi32
  1193.    extern CINT        AbortDoc(HDC) gdi32
  1194.    extern CINT        SetAbortProc(HDC, FARPROC) gdi32
  1195.  
  1196.    extern BOOL        AbortPath(HDC) gdi32
  1197.    extern BOOL        ArcTo(HDC, CINT, CINT, CINT, CINT, CINT, CINT, ;
  1198.                    CINT, CINT) gdi32
  1199.    extern BOOL        BeginPath(HDC) gdi32
  1200.    extern BOOL        CloseFigure(HDC) gdi32
  1201.    extern BOOL        EndPath(HDC) gdi32
  1202.    extern BOOL        FillPath(HDC) gdi32
  1203.    extern BOOL        FlattenPath(HDC) gdi32
  1204.    extern CINT        GetPath(HDC, LPSTRUCTURE, LPBYTE, CINT) gdi32
  1205.    extern HRGN        PathToRegion(HDC) gdi32
  1206.    extern BOOL        PolyDraw(HDC, LPSTRUCTURE, LPBYTE, CINT) gdi32
  1207.    extern BOOL        SelectClipPath(HDC, CINT) gdi32
  1208.    extern CINT        SetArcDirection(HDC, CINT) gdi32
  1209.    extern BOOL        SetMiterLimit(HDC, CFLOAT, PFLOAT) gdi32
  1210.    extern BOOL        StrokeAndFillPath(HDC) gdi32
  1211.    extern BOOL        StrokePath(HDC) gdi32
  1212.    extern BOOL        WidenPath(HDC) gdi32
  1213.    extern HPEN        ExtCreatePen(DWORD, DWORD, LPSTRUCTURE, DWORD, LPDWORD) gdi32
  1214.    extern BOOL        GetMiterLimit(HDC, PFLOAT) gdi32
  1215.    extern CINT        GetArcDirection(HDC) gdi32
  1216.  
  1217.    extern CINT        GetObject(HGDIOBJ, CINT, LPVOID) gdi32 ;
  1218.                    from "GetObjectA"
  1219.    extern BOOL        MoveToEx(HDC, CINT, CINT, LPSTRUCTURE) gdi32
  1220.    extern BOOL        TextOut(HDC, CINT, CINT, LPCSTR, CINT) gdi32 ;
  1221.                    from "TextOutA"
  1222.    extern BOOL        ExtTextOut(HDC, CINT, CINT, UINT, LPSTRUCTURE, ;
  1223.                    LPCSTR, UINT, LPINT) gdi32 ;
  1224.                    from "ExtTextOutA"
  1225.    extern BOOL        PolyTextOut(HDC, LPSTRUCTURE, CINT) gdi32 ;
  1226.                    from "PolyTextOutA"
  1227.  
  1228.    extern HRGN        CreatePolygonRgn(LPSTRUCTURE, CINT, CINT) gdi32
  1229.    extern BOOL        DPtoLP(HDC, LPSTRUCTURE, CINT) gdi32
  1230.    extern BOOL        LPtoDP(HDC, LPSTRUCTURE, CINT) gdi32
  1231.    extern BOOL        Polygon(HDC, LPSTRUCTURE, CINT) gdi32
  1232.    extern BOOL        Polyline(HDC, LPSTRUCTURE, CINT) gdi32
  1233.  
  1234.    extern BOOL        PolyBezier(HDC, LPSTRUCTURE, DWORD) gdi32
  1235.    extern BOOL        PolyBezierTo(HDC, LPSTRUCTURE, DWORD) gdi32
  1236.    extern BOOL        PolylineTo(HDC, LPSTRUCTURE, DWORD) gdi32
  1237.  
  1238.    extern BOOL        SetViewportExtEx(HDC, CINT, CINT, LPSTRUCTURE) gdi32
  1239.    extern BOOL        SetViewportOrgEx(HDC, CINT, CINT, LPSTRUCTURE) gdi32
  1240.    extern BOOL        SetWindowExtEx(HDC, CINT, CINT, LPSTRUCTURE) gdi32
  1241.    extern BOOL        SetWindowOrgEx(HDC, CINT, CINT, LPSTRUCTURE) gdi32
  1242.  
  1243.    extern BOOL        OffsetViewportOrgEx(HDC, CINT, CINT, LPSTRUCTURE) gdi32
  1244.    extern BOOL        OffsetWindowOrgEx(HDC, CINT, CINT, LPSTRUCTURE) gdi32
  1245.    extern BOOL        ScaleViewportExtEx(HDC, CINT, CINT, CINT, CINT, ;
  1246.                    LPSTRUCTURE) gdi32
  1247.    extern BOOL        ScaleWindowExtEx(HDC, CINT, CINT, CINT, CINT, ;
  1248.                    LPSTRUCTURE) gdi32
  1249.    extern BOOL        SetBitmapDimensionEx(HBITMAP, CINT, CINT, LPSTRUCTURE) gdi32
  1250.    extern BOOL        SetBrushOrgEx(HDC, CINT, CINT, LPSTRUCTURE) gdi32
  1251.  
  1252.    extern CINT        GetTextFace(HDC, CINT, LPSTR) gdi32 ;
  1253.                    from "GetTextFaceA"
  1254.  
  1255.    extern DWORD       GetKerningPairs(HDC, DWORD, LPSTRUCTURE) gdi32 ;
  1256.                    from "GetKerningPairsA"
  1257.  
  1258.    extern BOOL        GetDCOrgEx(HDC, LPSTRUCTURE) gdi32
  1259.    extern BOOL        FixBrushOrgEx(HDC, CINT, CINT, LPSTRUCTURE) gdi32
  1260.    extern BOOL        UnrealizeObject(HGDIOBJ) gdi32
  1261.  
  1262.    extern BOOL        GdiFlush() gdi32
  1263.    extern DWORD       GdiSetBatchLimit(DWORD) gdi32
  1264.    extern DWORD       GdiGetBatchLimit() gdi32
  1265.  
  1266.    extern CINT        SetICMMode(HDC, CINT) gdi32
  1267.    extern BOOL        CheckColorsInGamut(HDC, LPVOID, LPVOID, DWORD) gdi32
  1268.    extern HANDLE      GetColorSpace(HDC) gdi32
  1269.    extern BOOL        GetLogColorSpace(HCOLORSPACE,LPSTRUCTURE,DWORD) gdi32 ;
  1270.                    from "GetLogColorSpaceA"
  1271.    extern HCOLORSPACE CreateColorSpace(LPSTRUCTURE) gdi32 ;
  1272.                    from "CreateColorSpaceA"
  1273.    extern BOOL        SetColorSpace(HDC,HCOLORSPACE) gdi32
  1274.    extern BOOL        DeleteColorSpace(HCOLORSPACE) gdi32
  1275.    extern BOOL        GetICMProfile(HDC,LPDWORD,LPSTR) gdi32 ;
  1276.                    from "GetICMProfileA"
  1277.    extern BOOL        SetICMProfile(HDC,LPSTR) gdi32 ;
  1278.                    from "SetICMProfileA"
  1279.    extern BOOL        GetDeviceGammaRamp(HDC,LPVOID) gdi32
  1280.    extern BOOL        SetDeviceGammaRamp(HDC,LPVOID) gdi32
  1281.    extern BOOL        ColorMatchToTarget(HDC,HDC,DWORD) gdi32
  1282.    extern BOOL        UpdateICMRegKey(DWORD, DWORD, LPSTR, UINT) gdi32 ;
  1283.                    from "UpdateICMRegKeyA"
  1284.    extern CINT        EnumICMProfiles(HDC,FARPROC,LPARAM) gdi32 ;
  1285.                    from "EnumICMProfilesA"
  1286.    // End wingdi.h
  1287. return null
  1288.  
  1289. function ExternUser
  1290.    //--------------------------------------------------------------
  1291.    //
  1292.    //  Adapted from winuser.h 
  1293.    //  USER procedure declarations, constant definitions 
  1294.    //  and macros
  1295.    //
  1296.    //--------------------------------------------------------------
  1297.  
  1298.    extern CINT        wvsprintf(LPSTR, LPCSTR, va_list) user32 ;
  1299.                    from "wvsprintfA"
  1300.  
  1301.    //
  1302.    //  This needs to be    externed once for each possible combination
  1303.    //  of parameters.
  1304.    //
  1305.    //   extern cdecl CINT  wsprintf(LPSTR, LPCSTR, ...) user32 ;
  1306.    //                   from "wsprintfA"
  1307.  
  1308.    extern HKL         LoadKeyboardLayout(LPCSTR, UINT) user32 ;
  1309.                    from "LoadKeyboardLayoutA"
  1310.  
  1311.    if 'NT' $ os(1)
  1312.       extern BOOL        ActivateKeyboardLayout(HKL, UINT) user32
  1313.       extern CINT        ToUnicodeEx(UINT, UINT, PBYTE, LPWSTR, CINT, ;
  1314.                          UINT, HKL) user32
  1315.    else
  1316.       extern HKL         ActivateKeyboardLayout(HKL, UINT) user32
  1317.    endif
  1318.  
  1319.    extern BOOL        UnloadKeyboardLayout(HKL) user32
  1320.    extern BOOL        GetKeyboardLayoutName(LPSTR) user32 ;
  1321.                    from "GetKeyboardLayoutNameA"
  1322.    extern CINT        GetKeyboardLayoutList(CINT, CPTR) user32
  1323.    extern HKL         GetKeyboardLayout(DWORD) user32
  1324.  
  1325.    extern HDESK       CreateDesktop(LPSTR, LPSTR, LPSTRUCTURE, DWORD, ;
  1326.                    DWORD, LPSTRUCTURE) user32 ;
  1327.                    from "CreateDesktopA"
  1328.    extern HDESK       OpenDesktop(LPSTR, DWORD, BOOL, DWORD) user32 ;
  1329.                    from "OpenDesktopA"
  1330.    extern HDESK       OpenInputDesktop(DWORD, BOOL, DWORD) user32
  1331.  
  1332.    extern BOOL        EnumDesktops(HWINSTA, FARPROC, LPARAM) user32 ;
  1333.                    from "EnumDesktopsA"
  1334.    extern BOOL        EnumDesktopWindows(HDESK, FARPROC, LPARAM) user32
  1335.    extern BOOL        SwitchDesktop(HDESK) user32
  1336.    extern BOOL        SetThreadDesktop(HDESK) user32
  1337.    extern BOOL        CloseDesktop(HDESK) user32
  1338.    extern HDESK       GetThreadDesktop(DWORD) user32
  1339.  
  1340.    extern HWINSTA     CreateWindowStation(LPSTR, DWORD, DWORD, ;
  1341.                    LPSTRUCTURE) user32 ;
  1342.                    from "CreateWindowStationA"
  1343.    extern HWINSTA     OpenWindowStation(LPSTR, BOOL, DWORD) user32 ;
  1344.                    from "OpenWindowStationA"
  1345.    extern BOOL        EnumWindowStations(FARPROC, LPARAM) user32 ;
  1346.                    from "EnumWindowStationsA"
  1347.    extern BOOL        CloseWindowStation(HWINSTA) user32
  1348.    extern BOOL        SetProcessWindowStation(HWINSTA) user32
  1349.    extern HWINSTA     GetProcessWindowStation(VOID) user32
  1350.    extern BOOL        SetUserObjectSecurity(HANDLE, LPSTRUCTURE, ;
  1351.                    LPSTRUCTURE) user32
  1352.    extern BOOL        GetUserObjectSecurity(HANDLE, LPSTRUCTURE, LPSTRUCTURE, ;
  1353.                    DWORD, LPDWORD) user32
  1354.  
  1355.    extern BOOL        GetUserObjectInformationA(HANDLE, CINT, PVOID, ;
  1356.                    DWORD, LPDWORD) user32
  1357.    extern BOOL        SetUserObjectInformation(HANDLE, CINT, PVOID, DWORD) user32 ;
  1358.                    from "SetUserObjectInformationA"
  1359.  
  1360.    extern UINT        RegisterWindowMessage(LPCSTR) user32 ;
  1361.                    from "RegisterWindowMessageA"
  1362.  
  1363.    extern BOOL        DrawEdge(HDC, LPSTRUCTURE, UINT, UINT) user32
  1364.    extern BOOL        DrawFrameControl(HDC, LPSTRUCTURE, UINT, UINT) user32
  1365.    extern BOOL        DrawCaption(HWND, HDC, LPSTRUCTURE, UINT) user32
  1366.    extern BOOL        DrawAnimatedRects(HWND, CINT, LPSTRUCTURE, ;
  1367.                    LPSTRUCTURE) user32
  1368.  
  1369.    //
  1370.    // Message Function Templates
  1371.    //
  1372.  
  1373.    extern BOOL        GetMessage(LPSTRUCTURE, HWND, UINT, UINT) user32 ;
  1374.                    from "GetMessageA"
  1375.    extern BOOL        TranslateMessage(CPTR) user32
  1376.    extern LONG        DispatchMessage(CPTR) user32 ;
  1377.                    from "DispatchMessageA"
  1378.    extern BOOL        SetMessageQueue(CINT) user32
  1379.    extern BOOL        PeekMessage(LPSTRUCTURE, HWND, UINT, UINT, UINT) user32 ;
  1380.                    from "PeekMessageA"
  1381.    extern BOOL        RegisterHotKey(HWND, CINT, UINT, UINT) user32
  1382.    extern BOOL        UnregisterHotKey(HWND, CINT) user32
  1383.    extern BOOL        ExitWindowsEx(UINT, DWORD) user32
  1384.    extern BOOL        SwapMouseButton(BOOL) user32
  1385.    extern DWORD       GetMessagePos(VOID) user32
  1386.    extern LONG        GetMessageTime(VOID) user32
  1387.    extern LONG        GetMessageExtraInfo(VOID) user32
  1388.    extern LRESULT     SendMessage(HWND, UINT, WPARAM, LPARAM) user32 ;
  1389.                    from "SendMessageA"
  1390.    extern LRESULT     SendMessageTimeout(HWND, UINT, WPARAM, LPARAM, UINT, ;
  1391.                    UINT, LPDWORD) user32 ;
  1392.                    from "SendMessageTimeoutA"
  1393.    extern BOOL        SendNotifyMessage(HWND, UINT, WPARAM, LPARAM) user32 ;
  1394.                    from "SendNotifyMessageA"
  1395.    extern BOOL        SendMessageCallback(HWND, UINT, WPARAM, LPARAM, ;
  1396.                    FARPROC, DWORD) user32 ;
  1397.                    from "SendMessageCallbackA"
  1398.    extern LONG        BroadcastSystemMessage(DWORD, LPDWORD, UINT, ;
  1399.                    WPARAM, LPARAM) user32
  1400.    extern BOOL        PostMessage(HWND, UINT, WPARAM, LPARAM) user32 ;
  1401.                    from "PostMessageA"
  1402.    extern BOOL        PostThreadMessage(DWORD, UINT, WPARAM, LPARAM) user32 ;
  1403.                    from "PostThreadMessageA"
  1404.    extern BOOL        AttachThreadInput(DWORD, DWORD, BOOL) user32
  1405.    extern BOOL        ReplyMessage(LRESULT) user32
  1406.    extern BOOL        WaitMessage(VOID) user32
  1407.    extern DWORD       WaitForInputIdle(HANDLE, DWORD) user32
  1408.    extern LRESULT     DefWindowProc(HWND, UINT, WPARAM, LPARAM) user32 ;
  1409.                    from "DefWindowProcA"
  1410.    extern VOID        PostQuitMessage(CINT) user32
  1411.    extern LRESULT     CallWindowProc(FARPROC, HWND, UINT, WPARAM, LPARAM) user32 ;
  1412.                    from "CallWindowProcA"
  1413.    extern LRESULT     CallWindowProc(FARPROC, HWND, UINT, WPARAM, LPARAM) user32 ;
  1414.                    from "CallWindowProcA"
  1415.    extern BOOL        InSendMessage(VOID) user32
  1416.  
  1417.    extern UINT        GetDoubleClickTime(VOID) user32
  1418.    extern BOOL        SetDoubleClickTime(UINT) user32
  1419.    extern ATOM        RegisterClass(LPSTRUCTURE) user32 ;
  1420.                    from "RegisterClassA"
  1421.    extern BOOL        UnregisterClass(LPCSTR, HINSTANCE) user32 ;
  1422.                    from "UnregisterClassA"
  1423.    extern BOOL        GetClassInfo(HINSTANCE, LPCSTR, LPSTRUCTURE) user32 ;
  1424.                    from "GetClassInfoA"
  1425.    extern ATOM        RegisterClassEx(LPSTRUCTURE) user32 ;
  1426.                    from "RegisterClassExA"
  1427.    extern BOOL        GetClassInfoEx(HINSTANCE, LPCSTR, LPSTRUCTURE) user32 ;
  1428.                    from "GetClassInfoExA"
  1429.  
  1430.    extern HWND        CreateWindowEx(DWORD, LPCSTR, LPCSTR, DWORD, CINT, ;
  1431.                    CINT, CINT, CINT, HWND, HMENU, HINSTANCE, LPVOID) user32 ;
  1432.                    from "CreateWindowExA"
  1433.    extern BOOL        IsWindow(HWND) user32
  1434.    extern BOOL        IsMenu(HMENU) user32
  1435.    extern BOOL        IsChild(HWND, HWND) user32
  1436.    extern BOOL        DestroyWindow(HWND) user32
  1437.    extern BOOL        ShowWindow(HWND, CINT) user32
  1438.    extern BOOL        ShowWindowAsync(HWND, CINT) user32
  1439.    extern BOOL        FlashWindow(HWND, BOOL) user32
  1440.    extern BOOL        ShowOwnedPopups(HWND, BOOL) user32
  1441.    extern BOOL        OpenIcon(HWND) user32
  1442.    extern BOOL        CloseWindow(HWND) user32
  1443.    extern BOOL        MoveWindow(HWND, CINT, CINT, CINT, CINT, BOOL) user32
  1444.    extern BOOL        SetWindowPos(HWND, HWND, CINT, CINT, CINT, ;
  1445.                    CINT, UINT) user32
  1446.    extern BOOL        GetWindowPlacement(HWND, LPSTRUCTURE) user32
  1447.    extern BOOL        SetWindowPlacement(HWND, LPSTRUCTURE) user32
  1448.    extern HWND        BeginDeferWindowPos(CINT) user32
  1449.    extern HWND        DeferWindowPos(HWND, HWND, HWND, CINT, CINT, ;
  1450.                    CINT, CINT, UINT) user32
  1451.    extern BOOL        EndDeferWindowPos(HWND) user32
  1452.    extern BOOL        IsWindowVisible(HWND) user32
  1453.    extern BOOL        IsIconic(HWND) user32
  1454.    extern BOOL        AnyPopup(VOID) user32
  1455.    extern BOOL        BringWindowToTop(HWND) user32
  1456.    extern BOOL        IsZoomed(HWND) user32
  1457.  
  1458.    extern HWND        CreateDialogParam(HINSTANCE, LPCSTR, HWND, ;
  1459.                    FARPROC, LPARAM) user32 ;
  1460.                    from "CreateDialogParamA"
  1461.    extern HWND        CreateDialogIndirectParam(HINSTANCE, LPSTRUCTURE, HWND, ;
  1462.                    FARPROC, LPARAM) user32 ;
  1463.                    from "CreateDialogIndirectParamA"
  1464.    extern CINT        DialogBoxParamA(HINSTANCE, LPCSTR, HWND, ;
  1465.                    FARPROC, LPARAM) user32
  1466.    extern CINT        DialogBoxIndirectParam(HINSTANCE, LPSTRUCTURE, ;
  1467.                    HWND, FARPROC, LPARAM) user32 ;
  1468.                    from "DialogBoxIndirectParamA"
  1469.  
  1470.    #define DialogBox(hInstance, lpTemplate, hWndParent, lpDialogFunc) DialogBoxParam(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
  1471.    #define DialogBoxIndirect(hInstance, lpTemplate, hWndParent, lpDialogFunc) DialogBoxIndirectParam(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
  1472.  
  1473.    extern BOOL        EndDialog(HWND, CINT) user32
  1474.    extern HWND        GetDlgItem(HWND, CINT) user32
  1475.    extern BOOL        SetDlgItemInt(HWND, CINT, UINT, BOOL) user32
  1476.    extern UINT        GetDlgItemInt(HWND, CINT, LPBOOL, BOOL) user32
  1477.  
  1478.    extern BOOL        SetDlgItemText(HWND, CINT, LPCSTR) user32 ;
  1479.                    from "SetDlgItemTextA"
  1480.    extern UINT        GetDlgItemText(HWND, CINT, LPSTR, CINT) user32 ;
  1481.                    from "GetDlgItemTextA"
  1482.    extern BOOL        CheckDlgButton(HWND, CINT, UINT) user32
  1483.    extern BOOL        CheckRadioButton(HWND, CINT, CINT, CINT) user32
  1484.    extern UINT        IsDlgButtonChecked(HWND, CINT) user32
  1485.    extern LONG        SendDlgItemMessage(HWND, CINT, UINT, WPARAM, ;
  1486.                    LPARAM) user32 ;
  1487.                    from "SendDlgItemMessageA"
  1488.    extern HWND        GetNextDlgGroupItem(HWND, HWND, BOOL) user32
  1489.    extern HWND        GetNextDlgTabItem(HWND, HWND, BOOL) user32
  1490.    extern CINT        GetDlgCtrlID(HWND) user32
  1491.    extern CLONG       GetDialogBaseUnits(VOID) user32
  1492.    extern LRESULT     DefDlgProc(HWND, UINT, WPARAM, LPARAM) user32 ;
  1493.                    from "DefDlgProcA"
  1494.    extern BOOL        CallMsgFilter(LPSTRUCTURE, CINT) user32 ;
  1495.                    from "CallMsgFilterA"
  1496.    extern BOOL        OpenClipboard(HWND) user32
  1497.    extern BOOL        CloseClipboard(VOID) user32
  1498.    extern HWND        GetClipboardOwner(VOID) user32
  1499.    extern HWND        SetClipboardViewer(HWND) user32
  1500.    extern HWND        GetClipboardViewer(VOID) user32
  1501.    extern BOOL        ChangeClipboardChain(HWND, HWND) user32
  1502.    extern HANDLE      SetClipboardData(UINT, HANDLE) user32
  1503.    extern HANDLE      GetClipboardData(UINT) user32
  1504.    extern UINT        RegisterClipboardFormat(LPCSTR) user32 ;
  1505.                    from "RegisterClipboardFormatA"
  1506.    extern CINT        CountClipboardFormats(VOID) user32
  1507.    extern UINT        EnumClipboardFormats(UINT) user32
  1508.    extern CINT        GetClipboardFormatName(UINT, LPSTR, CINT) user32 ;
  1509.                    from "GetClipboardFormatNameA"
  1510.    extern BOOL        EmptyClipboard(VOID) user32
  1511.    extern BOOL        IsClipboardFormatAvailable(UINT) user32
  1512.    extern CINT        GetPriorityClipboardFormat(PUINT, CINT) user32
  1513.    extern HWND        GetOpenClipboardWindow(VOID) user32
  1514.  
  1515.    //
  1516.    // Character Translation Routines
  1517.    //
  1518.  
  1519.    extern BOOL        CharToOem(LPCSTR, LPSTR) user32 ;
  1520.                    from "CharToOemA"
  1521.    extern BOOL        OemToChar(LPCSTR, LPSTR) user32 ;
  1522.                    from "OemToCharA"
  1523.    extern BOOL        CharToOemBuff(LPCSTR, LPSTR, DWORD) user32 ;
  1524.                    from "CharToOemBuffA"
  1525.    extern BOOL        OemToCharBuff(LPCSTR, LPSTR, DWORD) user32 ;
  1526.                    from "OemToCharBuffA"
  1527.    extern LPSTR       CharUpper(LPSTR) user32 ;
  1528.                    from "CharUpperA"
  1529.    extern DWORD       CharUpperBuff(LPSTR, DWORD) user32 ;
  1530.                    from "CharUpperBuffA"
  1531.    extern LPSTR       CharLower(LPSTR) user32 ;
  1532.                    from "CharLowerA"
  1533.    extern DWORD       CharLowerBuff(LPSTR, DWORD) user32 ;
  1534.                    from "CharLowerBuffA"
  1535.    extern LPSTR       CharNext(LPCSTR) user32 ;
  1536.                    from "CharNextA"
  1537.    extern LPSTR       CharPrev(LPCSTR, LPCSTR) user32 ;
  1538.                    from "CharPrevA"
  1539.    extern LPSTR       CharNextEx(WORD, LPCSTR, DWORD) user32 ;
  1540.                    from "CharNextExA"
  1541.    extern LPSTR       CharPrevEx(WORD, LPCSTR, LPCSTR, DWORD) user32 ;
  1542.                    from "CharPrevExA"
  1543.  
  1544.    #define AnsiToOem CharToOem
  1545.    #define OemToAnsi OemToChar
  1546.    #define AnsiToOemBuff CharToOemBuff
  1547.    #define OemToAnsiBuff OemToCharBuff
  1548.    #define AnsiUpper CharUpper
  1549.    #define AnsiUpperBuff CharUpperBuff
  1550.    #define AnsiLower CharLower
  1551.    #define AnsiLowerBuff CharLowerBuff
  1552.    #define AnsiNext CharNext
  1553.    #define AnsiPrev CharPrev
  1554.  
  1555.    //
  1556.    // Language dependent Routines
  1557.    //
  1558.    extern BOOL        IsCharAlpha(CHAR) user32 ;
  1559.                    from "IsCharAlphaA"
  1560.    extern BOOL        IsCharAlphaNumeric(CHAR) user32 ;
  1561.                    from "IsCharAlphaNumericA"
  1562.    extern BOOL        IsCharUpperA(CHAR) user32
  1563.    extern BOOL        IsCharLowerA(CHAR) user32
  1564.    extern HWND        SetFocus(HWND) user32
  1565.    extern HWND        GetActiveWindow(VOID) user32
  1566.    extern HWND        GetFocus(VOID) user32
  1567.    extern UINT        GetKBCodePage(VOID) user32
  1568.    extern SHORT       GetKeyState(CINT) user32
  1569.    extern SHORT       GetAsyncKeyState(CINT) user32
  1570.    extern BOOL        GetKeyboardState(PBYTE) user32
  1571.    extern BOOL        SetKeyboardState(LPBYTE) user32
  1572.    extern CINT        GetKeyNameText(LONG, LPSTR, CINT) user32 ;
  1573.                    from "GetKeyNameTextA"
  1574.    extern CINT        GetKeyboardType(CINT) user32
  1575.    extern CINT        ToAscii(UINT, UINT, PBYTE, LPWORD, UINT) user32
  1576.    extern CINT        ToAsciiEx(UINT, UINT, PBYTE, LPWORD, UINT, HKL) user32
  1577.    extern CINT        ToUnicode(UINT, UINT, PBYTE, LPWSTR, CINT, UINT) user32
  1578.    extern DWORD       OemKeyScan(WORD) user32
  1579.    extern SHORT       VkKeyScan(CHAR) user32 ;
  1580.                    from "VkKeyScanA"
  1581.    extern SHORT       VkKeyScanEx(CHAR, HKL) user32 ;
  1582.                    from "VkKeyScanExA"
  1583.    extern VOID        keybd_event(BYTE, BYTE, DWORD, DWORD) user32
  1584.    extern VOID        mouse_event(DWORD, DWORD, DWORD, DWORD, DWORD) user32
  1585.    extern UINT        MapVirtualKey(UINT, UINT) user32 ;
  1586.                    from "MapVirtualKeyA"
  1587.    extern UINT        MapVirtualKeyEx(UINT, UINT, HKL) user32 ;
  1588.                    from "MapVirtualKeyExA"
  1589.    extern BOOL        GetInputState(VOID) user32
  1590.    extern DWORD       GetQueueStatus(UINT) user32
  1591.    extern HWND        GetCapture(VOID) user32
  1592.    extern HWND        SetCapture(HWND) user32
  1593.    extern BOOL        ReleaseCapture(VOID) user32
  1594.    extern DWORD       MsgWaitForMultipleObjects(DWORD, LPHANDLE, BOOL, ;
  1595.                    DWORD, DWORD) user32
  1596.  
  1597.    //
  1598.    // Windows Functions
  1599.    //
  1600.  
  1601.    extern UINT        SetTimer(HWND, UINT, UINT, FARPROC) user32
  1602.    extern BOOL        KillTimer(HWND, UINT) user32
  1603.    extern BOOL        IsWindowUnicode(HWND) user32
  1604.    extern BOOL        EnableWindow(HWND, BOOL) user32
  1605.    extern BOOL        IsWindowEnabled(HWND) user32
  1606.    extern HACCEL      LoadAccelerators(HINSTANCE, LPCSTR) user32 ;
  1607.                    from "LoadAcceleratorsA"
  1608.    extern HACCEL      CreateAcceleratorTable(LPSTRUCTURE, CINT) user32 ;
  1609.                    from "CreateAcceleratorTableA"
  1610.    extern BOOL        DestroyAcceleratorTable(HACCEL) user32
  1611.    extern CINT        CopyAcceleratorTable(HACCEL, LPSTRUCTURE, CINT) user32 ;
  1612.                    from "CopyAcceleratorTableA"
  1613.    extern CINT        TranslateAccelerator(HWND, HACCEL, LPSTRUCTURE) user32 ;
  1614.                    from "TranslateAcceleratorA"
  1615.    extern CINT        GetSystemMetrics(CINT) user32
  1616.    extern HMENU       LoadMenu(HINSTANCE, LPCSTR) user32 ;
  1617.                    from "LoadMenuA"
  1618.    extern HMENU       LoadMenuIndirect(LPSTRUCTURE) user32 ;
  1619.                    from "LoadMenuIndirectA"
  1620.    extern HMENU       GetMenu(HWND) user32
  1621.    extern BOOL        SetMenu(HWND, HMENU) user32
  1622.    extern BOOL        ChangeMenu(HMENU, UINT, LPCSTR, UINT, UINT) user32 ;
  1623.                    from "ChangeMenuA"
  1624.    extern BOOL        HiliteMenuItem(HWND, HMENU, UINT, UINT) user32
  1625.    extern CINT        GetMenuString(HMENU, UINT, LPSTR, CINT, UINT) user32 ;
  1626.                    from "GetMenuStringA"
  1627.    extern UINT        GetMenuState(HMENU, UINT, UINT) user32
  1628.    extern BOOL        DrawMenuBar(HWND) user32
  1629.    extern HMENU       GetSystemMenu(HWND, BOOL) user32
  1630.    extern HMENU       CreateMenu(VOID) user32
  1631.    extern HMENU       CreatePopupMenu(VOID) user32
  1632.    extern BOOL        DestroyMenu(HMENU) user32
  1633.    extern DWORD       CheckMenuItem(HMENU, UINT, UINT) user32
  1634.    extern BOOL        EnableMenuItem(HMENU, UINT, UINT) user32
  1635.    extern HMENU       GetSubMenu(HMENU, CINT) user32
  1636.    extern UINT        GetMenuItemID(HMENU, CINT) user32
  1637.    extern CINT        GetMenuItemCount(HMENU) user32
  1638.    extern BOOL        InsertMenu(HMENU, UINT, UINT, UINT, LPCSTR) user32 ;
  1639.                    from "InsertMenuA"
  1640.    extern BOOL        AppendMenu(HMENU, UINT, UINT, LPCSTR) user32 ;
  1641.                    from "AppendMenuA"
  1642.    extern BOOL        ModifyMenu(HMENU, UINT, UINT, UINT, LPCSTR) user32 ;
  1643.                    from "ModifyMenuA"
  1644.    extern BOOL        RemoveMenu(HMENU, UINT, UINT) user32
  1645.    extern BOOL        DeleteMenu(HMENU, UINT, UINT) user32
  1646.    extern BOOL        SetMenuItemBitmaps(HMENU, UINT, UINT, ;
  1647.                    HBITMAP, HBITMAP) user32
  1648.    extern LONG        GetMenuCheckMarkDimensions(VOID) user32
  1649.    extern BOOL        TrackPopupMenu(HMENU, UINT, CINT, CINT, CINT, HWND, ;
  1650.                    LPSTRUCTURE) user32
  1651.    extern BOOL        TrackPopupMenuEx(HMENU, UINT, CINT, CINT, ;
  1652.                    HWND, LPSTRUCTURE) user32
  1653.    extern BOOL        InsertMenuItem(HMENU, UINT, BOOL, LPSTRUCTURE) user32 ;
  1654.                    from "InsertMenuItemA"
  1655.    extern BOOL        GetMenuItemInfo(HMENU, UINT, BOOL, LPSTRUCTURE) user32 ;
  1656.                    from "GetMenuItemInfoA"
  1657.    extern BOOL        SetMenuItemInfo(HMENU, UINT, BOOL, LPSTRUCTURE) user32 ;
  1658.                    from "SetMenuItemInfoA"
  1659.  
  1660.    extern UINT        GetMenuDefaultItem(HMENU, UINT, UINT) user32
  1661.    extern BOOL        SetMenuDefaultItem(HMENU, UINT, UINT) user32
  1662.  
  1663.    extern BOOL        GetMenuItemRect(HWND, HMENU, UINT, LPSTRUCTURE) user32
  1664.    extern CINT        MenuItemFromPoint(HWND, HMENU, LPSTRUCTURE) user32
  1665.  
  1666.    extern DWORD       DragObject(HWND, HWND, UINT, DWORD, HCURSOR) user32
  1667.    extern BOOL        DragDetect(HWND, LPSTRUCTURE) user32
  1668.  
  1669.    extern BOOL        DrawIcon(HDC, CINT, CINT, HICON) user32
  1670.    extern CINT        DrawText(HDC, LPCSTR, CINT, LPSTRUCTURE, UINT) user32 ;
  1671.                    from "DrawTextA"
  1672.    extern CINT        DrawTextEx(HDC, LPSTR, CINT, LPSTRUCTURE, ;
  1673.                    UINT, LPSTRUCTURE) user32 ;
  1674.                    from "DrawTextExA"
  1675.    extern BOOL        GrayString(HDC, HBRUSH, FARPROC, LPARAM, CINT, CINT, ;
  1676.                    CINT, CINT, CINT) user32 ;
  1677.                    from "GrayStringA"
  1678.  
  1679.    extern BOOL        DrawState(HDC, HBRUSH, FARPROC, LPARAM, WPARAM, CINT, ;
  1680.                    CINT, CINT, CINT, UINT) user32 ;
  1681.                    from "DrawStateA"
  1682.    extern LONG        TabbedTextOut(HDC, CINT, CINT, LPCSTR, CINT, CINT, ;
  1683.                    LPINT, CINT) user32 ;
  1684.                    from "TabbedTextOutA"
  1685.    extern DWORD       GetTabbedTextExtent(HDC, LPCSTR, CINT, CINT, LPINT) user32 ;
  1686.                    from "GetTabbedTextExtentA"
  1687.    extern BOOL        UpdateWindow(HWND) user32
  1688.    extern HWND        SetActiveWindow(HWND) user32
  1689.    extern HWND        GetForegroundWindow(VOID) user32
  1690.    extern BOOL        SetForegroundWindow(HWND) user32
  1691.    extern HWND        WindowFromDC(HDC) user32
  1692.    extern HDC         GetDC(HWND) user32
  1693.    extern HDC         GetDCEx(HWND, HRGN, DWORD) user32
  1694.    extern HDC         GetWindowDC(HWND) user32
  1695.    extern CINT        ReleaseDC(HWND, HDC) user32
  1696.    extern HDC         BeginPaint(HWND, LPSTRUCTURE) user32
  1697.    extern BOOL        EndPaint(HWND, LPSTRUCTURE) user32
  1698.    extern BOOL        GetUpdateRect(HWND, LPSTRUCTURE, BOOL) user32
  1699.    extern CINT        GetUpdateRgn(HWND, HRGN, BOOL) user32
  1700.    extern CINT        SetWindowRgn(HWND, HRGN, BOOL) user32
  1701.    extern CINT        GetWindowRgn(HWND, HRGN) user32
  1702.    extern CINT        ExcludeUpdateRgn(HDC, HWND) user32
  1703.    extern BOOL        InvalidateRect(HWND, LPSTRUCTURE, BOOL) user32
  1704.    extern BOOL        ValidateRect(HWND, LPSTRUCTURE) user32
  1705.    extern BOOL        InvalidateRgn(HWND, HRGN, BOOL) user32
  1706.    extern BOOL        ValidateRgn(HWND, HRGN) user32
  1707.    extern BOOL        RedrawWindow(HWND, LPSTRUCTURE, HRGN, UINT) user32
  1708.  
  1709.    //
  1710.    // LockWindowUpdate API
  1711.    //
  1712.  
  1713.    extern BOOL        LockWindowUpdate(HWND) user32
  1714.    extern BOOL        ScrollWindow(HWND, CINT, CINT, LPSTRUCTURE, ;
  1715.                    LPSTRUCTURE) user32
  1716.    extern BOOL        ScrollDC(HDC, CINT, CINT, LPSTRUCTURE, LPSTRUCTURE, ;
  1717.                    HRGN, LPRECT) user32
  1718.    extern CINT        ScrollWindowEx(HWND, CINT, CINT, LPSTRUCTURE, ;
  1719.                    LPSTRUCTURE, HRGN, LPSTRUCTURE, UINT) user32
  1720.    extern CINT        SetScrollPos(HWND, CINT, CINT, BOOL) user32
  1721.    extern CINT        GetScrollPos(HWND, CINT) user32
  1722.    extern BOOL        SetScrollRange(HWND, CINT, CINT, CINT, BOOL) user32
  1723.    extern BOOL        GetScrollRange(HWND, CINT, LPINT, LPINT) user32
  1724.    extern BOOL        ShowScrollBar(HWND, CINT, BOOL) user32
  1725.    extern BOOL        EnableScrollBar(HWND, UINT, UINT) user32
  1726.  
  1727.    //  SetProp() conflicts with undocumented dBASE function
  1728.    extern BOOL        SetPropA(HWND, LPCSTR, HANDLE) user32 ;
  1729.                    from "SetPropA"
  1730.    extern HANDLE      GetProp(HWND, LPCSTR) user32 ;
  1731.                    from "GetPropA"
  1732.    extern HANDLE      RemoveProp(HWND, LPCSTR) user32 ;
  1733.                    from "RemovePropA"
  1734.    extern CINT        EnumPropsEx(HWND, FARPROC, LPARAM) user32 ;
  1735.                    from "EnumPropsExA"
  1736.    extern CINT        EnumProps(HWND, FARPROC) user32 ;
  1737.                    from "EnumPropsA"
  1738.    extern BOOL        SetWindowText(HWND, LPCSTR) user32 ;
  1739.                    from "SetWindowTextA"
  1740.    extern CINT        GetWindowText(HWND, LPSTR, CINT) user32 ;
  1741.                    from "GetWindowTextA"
  1742.    extern CINT        GetWindowTextLength(HWND) user32 ;
  1743.                    from "GetWindowTextLengthA"
  1744.    extern BOOL        GetClientRect(HWND, LPRECT) user32
  1745.    extern BOOL        GetWindowRect(HWND, LPRECT) user32
  1746.    extern BOOL        AdjustWindowRect(LPRECT, DWORD, BOOL) user32
  1747.    extern BOOL        AdjustWindowRectEx(LPRECT, DWORD, BOOL, DWORD) user32
  1748.  
  1749.    extern BOOL        SetWindowContextHelpId(HWND, DWORD) user32
  1750.    extern DWORD       GetWindowContextHelpId(HWND) user32
  1751.    extern BOOL        SetMenuContextHelpId(HMENU, DWORD) user32
  1752.    extern DWORD       GetMenuContextHelpId(HMENU) user32
  1753.  
  1754.    extern CINT        MessageBox(HWND, LPCSTR, LPCSTR, UINT) user32 ;
  1755.                    from "MessageBoxA"
  1756.    extern CINT        MessageBoxEx(HWND, LPCSTR, LPCSTR, UINT, WORD) user32 ;
  1757.                    from "MessageBoxExA"
  1758.    extern CINT        MessageBoxIndirect(LPSTRUCTURE) user32 ;
  1759.                    from "MessageBoxIndirectA"
  1760.    extern BOOL        MessageBeep(UINT) user32
  1761.    extern CINT        ShowCursor(BOOL) user32
  1762.    extern BOOL        SetCursorPos(CINT, CINT) user32
  1763.    extern HCURSOR     SetCursor(HCURSOR) user32
  1764.    extern BOOL        GetCursorPos(LPPOINT) user32
  1765.    extern BOOL        ClipCursor(LPSTRUCTURE) user32
  1766.    extern BOOL        GetClipCursor(LPRECT) user32
  1767.    extern HCURSOR     GetCursor(VOID) user32
  1768.    extern BOOL        CreateCaret(HWND, HBITMAP, CINT, CINT) user32
  1769.    extern UINT        GetCaretBlinkTime(VOID) user32
  1770.    extern BOOL        SetCaretBlinkTime(UINT) user32
  1771.    extern BOOL        DestroyCaret(VOID) user32
  1772.    extern BOOL        HideCaret(HWND) user32
  1773.    extern BOOL        ShowCaret(HWND) user32
  1774.    extern BOOL        SetCaretPos(CINT, CINT) user32
  1775.    extern BOOL        GetCaretPos(LPSTRUCTURE) user32
  1776.    extern BOOL        ClientToScreen(HWND, LPSTRUCTURE) user32
  1777.    extern BOOL        ScreenToClient(HWND, LPSTRUCTURE) user32
  1778.    extern CINT        MapWindowPoints(HWND, HWND, LPSTRUCTURE, UINT) user32
  1779.    extern HWND        WindowFromPoint(LPSTRUCTURE) user32
  1780.    extern HWND        ChildWindowFromPoint(HWND, LPSTRUCTURE) user32
  1781.  
  1782.    extern DWORD       GetSysColor(CINT) user32
  1783.    extern HBRUSH      GetSysColorBrush(CINT) user32
  1784.    extern BOOL        SetSysColors(CINT, LPINT, LPCOLORREF) user32
  1785.    extern BOOL        DrawFocusRect(HDC, LPSTRUCTURE) user32
  1786.    extern CINT        FillRect(HDC, LPSTRUCTURE, HBRUSH) user32
  1787.    extern CINT        FrameRect(HDC, LPSTRUCTURE, HBRUSH) user32
  1788.    extern BOOL        InvertRect(HDC, LPSTRUCTURE) user32
  1789.    extern BOOL        SetRect(LPSTRUCTURE, CINT, CINT, CINT, CINT) user32
  1790.    extern BOOL        SetRectEmpty(LPSTRUCTURE) user32
  1791.    extern BOOL        CopyRect(LPSTRUCTURE, LPSTRUCTURE) user32
  1792.    extern BOOL        InflateRect(LPSTRUCTURE, CINT, CINT) user32
  1793.    extern BOOL        IntersectRect(LPSTRUCTURE, LPSTRUCTURE, LPSTRUCTURE) user32
  1794.    extern BOOL        UnionRect(LPSTRUCTURE, LPSTRUCTURE, LPSTRUCTURE) user32
  1795.    extern BOOL        SubtractRect(LPSTRUCTURE, LPSTRUCTURE, LPSTRUCTURE) user32
  1796.    extern BOOL        OffsetRect(LPSTRUCTURE, CINT, CINT) user32
  1797.    extern BOOL        IsRectEmpty(LPSTRUCTURE) user32
  1798.    extern BOOL        EqualRect(LPSTRUCTURE, LPSTRUCTURE) user32
  1799.    extern BOOL        PtInRect(LPSTRUCTURE, LPSTRUCTURE) user32
  1800.    extern WORD        GetWindowWord(HWND, CINT) user32
  1801.    extern WORD        SetWindowWord(HWND, CINT, WORD) user32
  1802.    extern LONG        GetWindowLong(HWND, CINT) user32 ;
  1803.                    from "GetWindowLongA"
  1804.    extern LONG        SetWindowLong(HWND, CINT, LONG) user32 ;
  1805.                    from "SetWindowLongA"
  1806.    extern WORD        GetClassWord(HWND, CINT) user32
  1807.    extern WORD        SetClassWord(HWND, CINT, WORD) user32
  1808.    extern DWORD       GetClassLong(HWND, CINT) user32 ;
  1809.                    from "GetClassLongA"
  1810.    extern DWORD       SetClassLong(HWND, CINT, LONG) user32 ;
  1811.                    from "SetClassLongA"
  1812.    extern HWND        GetDesktopWindow(VOID) user32
  1813.    extern HWND        GetParent(HWND) user32
  1814.    extern HWND        SetParent(HWND, HWND) user32
  1815.    extern BOOL        EnumChildWindows(HWND, FARPROC, LPARAM) user32
  1816.    extern HWND        FindWindow(LPCSTR, LPCSTR) user32 ;
  1817.                    from "FindWindowA"
  1818.    extern HWND        FindWindowEx(HWND, HWND, LPCSTR, LPCSTR) user32 ;
  1819.                    from "FindWindowExA"
  1820.    extern BOOL        EnumWindows(FARPROC, LPARAM) user32
  1821.    extern BOOL        EnumThreadWindows(DWORD, FARPROC, LPARAM) user32
  1822.    extern CINT        GetClassName(HWND, LPSTR, CINT) user32 ;
  1823.                    from "GetClassNameA"
  1824.    extern HWND        GetTopWindow(HWND) user32
  1825.    extern DWORD       GetWindowThreadProcessId(HWND, LPDWORD) user32
  1826.    extern HWND        GetLastActivePopup(HWND) user32
  1827.  
  1828.    extern HWND        GetWindow(HWND, UINT) user32
  1829.    extern CLONG       SetWindowsHook(CINT, FARPROC) user32 ;
  1830.                    from "SetWindowsHookA"
  1831.    extern CLONG       SetWindowsHook(CINT, FARPROC) user32 ;
  1832.                    from "SetWindowsHookA"
  1833.    extern BOOL        UnhookWindowsHook(CINT, FARPROC) user32
  1834.    extern CLONG       SetWindowsHookEx(CINT, FARPROC, HINSTANCE, DWORD) user32 ;
  1835.                    from "SetWindowsHookExA"
  1836.    extern BOOL        UnhookWindowsHookEx(HHOOK) user32
  1837.    extern LRESULT     CallNextHookEx(HHOOK, CINT, WPARAM, LPARAM) user32
  1838.  
  1839.    extern BOOL        CheckMenuRadioItem(HMENU, UINT, UINT, UINT, UINT) user32
  1840.  
  1841.    //
  1842.    // Resource Loading Routines
  1843.    //
  1844.  
  1845.    extern HBITMAP     LoadBitmap(HINSTANCE, LPCSTR) user32 ;
  1846.                    from "LoadBitmapA"
  1847.    extern HCURSOR     LoadCursor(HINSTANCE, LPCSTR) user32 ;
  1848.                    from "LoadCursorA"
  1849.    extern HCURSOR     LoadCursorFromFile(LPCSTR) user32 ;
  1850.                    from "LoadCursorFromFileA"
  1851.    extern HCURSOR     CreateCursor(HINSTANCE, CINT, CINT, CINT, CINT, ;
  1852.                    LPVOID, LPVOID) user32
  1853.    extern BOOL        DestroyCursor(HCURSOR) user32
  1854.  
  1855.    extern BOOL        SetSystemCursor(HCURSOR, DWORD) user32
  1856.    extern HICON       LoadIcon(HINSTANCE, LPCSTR) user32 ;
  1857.                    from "LoadIconA"
  1858.    extern HICON       CreateIcon(HINSTANCE, CINT, CINT, BYTE, BYTE, ;
  1859.                    LPBYTE, LPBYTE) user32
  1860.    extern BOOL        DestroyIcon(HICON) user32
  1861.    extern CINT        LookupIconIdFromDirectory(PBYTE, BOOL) user32
  1862.    extern CINT        LookupIconIdFromDirectoryEx(PBYTE, BOOL, CINT, ;
  1863.                    CINT, UINT) user32
  1864.    extern HICON       CreateIconFromResource(PBYTE, DWORD, BOOL, DWORD) user32
  1865.  
  1866.    extern HICON       CreateIconFromResourceEx(PBYTE, DWORD, BOOL, DWORD, ;
  1867.                    CINT, CINT, UINT) user32
  1868.  
  1869.    extern HANDLE      LoadImage(HINSTANCE, LPCSTR, UINT, CINT, ;
  1870.                    CINT, UINT) user32 ;
  1871.                    from "LoadImageA"
  1872.    extern HICON       CopyImage(HANDLE, UINT, CINT, CINT, UINT) user32
  1873.    extern BOOL        DrawIconEx(HDC, CINT, CINT, HICON, CINT, CINT, ;
  1874.                    UINT, HBRUSH, UINT) user32
  1875.    extern HICON       CreateIconIndirect(LPSTRUCTURE) user32
  1876.    extern HICON       CopyIcon(HICON) user32
  1877.    extern BOOL        GetIconInfo(HICON, LPSTRUCTURE) user32
  1878.  
  1879.    extern CINT        LoadString(HINSTANCE, UINT, LPSTR, CINT) user32 ;
  1880.                    from "LoadStringA"
  1881.  
  1882.    extern BOOL        IsDialogMessage(HWND, LPSTRUCTURE) user32 ;
  1883.                    from "IsDialogMessageA"
  1884.    extern BOOL        MapDialogRect(HWND, LPRECT) user32
  1885.    extern CINT        DlgDirList(HWND, LPSTR, CINT, CINT, UINT) user32 ;
  1886.                    from "DlgDirListA"
  1887.    extern BOOL        DlgDirSelectEx(HWND, LPSTR, CINT, CINT) user32 ;
  1888.                    from "DlgDirSelectExA"
  1889.    extern CINT        DlgDirListComboBox(HWND, LPSTR, CINT, CINT, UINT) user32 ;
  1890.                    from "DlgDirListComboBoxA"
  1891.    extern BOOL        DlgDirSelectComboBoxEx(HWND, LPSTR, CINT, CINT) user32 ;
  1892.                    from "DlgDirSelectComboBoxExA"
  1893.  
  1894.    extern CINT        SetScrollInfo(HWND, CINT, LPSTRUCTURE, BOOL) user32
  1895.    extern BOOL        GetScrollInfo(HWND, CINT, LPSTRUCTURE) user32
  1896.    extern LRESULT     DefFrameProc(HWND, HWND, UINT, WPARAM, LPARAM) user32 ;
  1897.                    from "DefFrameProcA"
  1898.    extern LRESULT     DefMDIChildProc(HWND, UINT, WPARAM, LPARAM) user32 ;
  1899.                    from "DefMDIChildProcA"
  1900.    extern BOOL        TranslateMDISysAccel(HWND, LPSTRUCTURE) user32
  1901.    extern UINT        ArrangeIconicWindows(HWND) user32
  1902.    extern HWND        CreateMDIWindow(LPSTR, LPSTR, DWORD, CINT, CINT, CINT, ;
  1903.                    CINT, HWND, HINSTANCE, LPARAM) user32 ;
  1904.                    from "CreateMDIWindowA"
  1905.    extern WORD        TileWindows(HWND, UINT, LPSTRUCTURE, UINT, CPTR) user32
  1906.    extern WORD        CascadeWindows(HWND, UINT, LPSTRUCTURE, UINT, CPTR) user32
  1907.  
  1908.    extern BOOL        WinHelp(HWND, LPCSTR, UINT, DWORD) user32 ;
  1909.                    from "WinHelpA"
  1910.  
  1911.    extern LONG        ChangeDisplaySettings(LPSTRUCTURE, DWORD) user32 ;
  1912.                    from "ChangeDisplaySettingsA"
  1913.    extern BOOL        EnumDisplaySettings(LPCSTR, DWORD, LPSTRUCTURE) user32 ;
  1914.                    from "EnumDisplaySettingsA"
  1915.    extern BOOL        SystemParametersInfo(UINT, UINT, PVOID, UINT) user32 ;
  1916.                    from "SystemParametersInfoA"
  1917.  
  1918.    extern VOID        SetDebugErrorLevel(DWORD) user32
  1919.    extern VOID        SetLastErrorEx(DWORD, DWORD) user32
  1920.    // End winuser.h
  1921. return null
  1922.  
  1923. function ExternRegistry
  1924.    //
  1925.    // BUILD Version: 0001  
  1926.    // 
  1927.    // Adapted from Winreg.h
  1928.    // Abstract:
  1929.    //     This module contains the function prototypes and constant, type and
  1930.    //     structure definitions for the Windows 32-Bit Registry API.
  1931.    //
  1932.  
  1933.    //
  1934.    // Requested Key access mask type.
  1935.    //
  1936.  
  1937.    #define ACCESS_MASK DWORD
  1938.    #define REGSAM ACCESS_MASK
  1939.  
  1940.    //
  1941.    // Type definitions.
  1942.    //
  1943.    #define HKEY HANDLE
  1944.    #define PHKEY PHANDLE
  1945.  
  1946.    #define val_context LPSTRUCTURE
  1947.    #define PVALCONTEXT LPSTRUCTURE
  1948.    #define PVALUE      LPSTRUCTURE
  1949.    #define PPVALUE     LPSTRUCTURE
  1950.    #define QUERYHANDLER  FARPROC
  1951.    #define PQUERYHANDLER FARPROC
  1952.    #define REG_PROVIDER LPSTRUCTURE
  1953.    #define PPROVIDER    LPSTRUCTURE
  1954.    #define VALENT       LPSTRUCTURE
  1955.    #define PVALENT      LPSTRUCTURE
  1956.  
  1957.    //
  1958.    // API Prototypes.
  1959.    //
  1960.  
  1961.    extern LONG        RegCloseKey (HKEY) advapi32
  1962.    extern LONG        RegConnectRegistry(LPSTR, HKEY, PHKEY) advapi32 ;
  1963.                    from "RegConnectRegistryA"
  1964.    extern LONG        RegCreateKey(HKEY, LPCSTR, PHKEY) advapi32 ;
  1965.                    from "RegCreateKeyA"
  1966.    extern LONG        RegCreateKeyEx(HKEY, LPCSTR, DWORD, LPSTR, DWORD, ;
  1967.                    REGSAM, LPSTRUCTURE, PHKEY, LPDWORD) advapi32 ;
  1968.                    from "RegCreateKeyExA"
  1969.    extern LONG        RegDeleteKey(HKEY, LPCSTR) advapi32 ;
  1970.                    from "RegDeleteKeyA"
  1971.    extern LONG        RegDeleteValue(HKEY, LPCSTR) advapi32 ;
  1972.                    from "RegDeleteValueA"
  1973.    extern LONG        RegEnumKey(HKEY, DWORD, LPSTR, DWORD) advapi32 ;
  1974.                    from "RegEnumKeyA"
  1975.    extern LONG        RegEnumKeyEx(HKEY, DWORD, LPSTR, LPDWORD, LPDWORD, ;
  1976.                    LPSTR, LPDWORD, LPSTRUCTURE) advapi32 ;
  1977.                    from "RegEnumKeyExA"
  1978.    extern LONG        RegEnumValue(HKEY, DWORD, LPSTR, LPDWORD, LPDWORD, ;
  1979.                    LPDWORD, LPBYTE, LPDWORD) advapi32 ;
  1980.                    from "RegEnumValueA"
  1981.    extern LONG        RegFlushKey(HKEY) advapi32
  1982.    extern LONG        RegGetKeySecurity(HKEY, LPSTRUCTURE, LPSTRUCTURE, ;
  1983.                    LPDWORD) advapi32
  1984.    extern LONG        RegLoadKey(HKEY, LPCSTR, LPCSTR) advapi32 ;
  1985.                    from "RegLoadKeyA"
  1986.    extern LONG        RegNotifyChangeKeyValue(HKEY, BOOL, DWORD, ;
  1987.                    HANDLE, BOOL) advapi32
  1988.    extern LONG        RegOpenKey(HKEY, LPCSTR, PHKEY) advapi32 ;
  1989.                    from "RegOpenKeyA"
  1990.    extern LONG        RegOpenKeyEx(HKEY, LPCSTR, DWORD, REGSAM, PHKEY) advapi32 ;
  1991.                    from "RegOpenKeyExA"
  1992.    extern LONG        RegQueryInfoKey(HKEY, LPSTR, LPDWORD, LPDWORD, LPDWORD, ;
  1993.                    LPDWORD, LPDWORD, LPDWORD, LPDWORD, LPDWORD, LPDWORD, ;
  1994.                    LPSTRUCTURE) advapi32 ;
  1995.                    from "RegQueryInfoKeyA"
  1996.    extern LONG        RegQueryValue(HKEY, LPCSTR, LPSTR, PLONG) advapi32 ;
  1997.                    from "RegQueryValueA"
  1998.    extern LONG        RegQueryMultipleValues(HKEY, PVALENT, DWORD, LPSTR, ;
  1999.                    LPDWORD) advapi32 ;
  2000.                    from "RegQueryMultipleValuesA"
  2001.    extern LONG        RegQueryValueEx(HKEY, LPCSTR, LPDWORD, LPDWORD, ;
  2002.                    LPBYTE, LPDWORD) advapi32 ;
  2003.                    from "RegQueryValueExA"
  2004.    extern LONG        RegReplaceKey(HKEY, LPCSTR, LPCSTR, LPCSTR) advapi32 ;
  2005.                    from "RegReplaceKeyA"
  2006.    extern LONG        RegRestoreKey(HKEY, LPCSTR, DWORD) advapi32 ;
  2007.                    from "RegRestoreKeyA"
  2008.    extern LONG        RegSaveKey(HKEY, LPCSTR, LPSTRUCTURE) advapi32 ;
  2009.                    from "RegSaveKeyA"
  2010.    extern LONG        RegSetKeySecurity (HKEY, SECURITY_INFORMATION, ;
  2011.                    PSECURITY_INFORMATION) advapi32
  2012.    extern LONG        RegSetValue(HKEY, LPCSTR, DWORD, LPCSTR, DWORD) advapi32 ;
  2013.                    from "RegSetValueA"
  2014.    extern LONG        RegSetValueEx(HKEY, LPCSTR, DWORD, DWORD, PBYTE, ;
  2015.                    DWORD) advapi32 ;
  2016.                    from "RegSetValueExA"
  2017.    extern LONG        RegUnLoadKey(HKEY, LPCSTR) advapi32 ;
  2018.                    from "RegUnLoadKeyA"
  2019.  
  2020.    //
  2021.    // Remoteable System Shutdown APIs
  2022.    //
  2023.  
  2024.    extern BOOL        InitiateSystemShutdown(LPSTR, LPSTR, DWORD, ;
  2025.                    BOOL, BOOL) advapi32 ;
  2026.                    from "InitiateSystemShutdownA"
  2027.    extern BOOL        AbortSystemShutdown(LPSTR) advapi32 ;
  2028.                    from "AbortSystemShutdownA"
  2029.    // End winreg.h
  2030. return null
  2031.  
  2032. function ExternNetwork
  2033.    // 
  2034.    // Adapted from winnetwk.h
  2035.    // 
  2036.    // Standard WINNET Header File for WIN32
  2037.    // 
  2038.    // User Mode -Win32
  2039.    // 
  2040.    #define NETRESOURCE   LPSTRUCTURE
  2041.    #define LPNETRESOURCE LPSTRUCTURE
  2042.   
  2043.    //
  2044.    //  Network Connections.
  2045.    // 
  2046.  
  2047.    extern DWORD       WNetAddConnection(LPCSTR, LPCSTR, LPCSTR) mpr.dll ;
  2048.                    from "WNetAddConnectionA"
  2049.    extern DWORD       WNetAddConnection2(LPNETRESOURCE, LPCSTR, LPCSTR, ;
  2050.                    DWORD) mpr.dll ;
  2051.                    from "WNetAddConnection2A"
  2052.    extern DWORD       WNetAddConnection3(HWND, LPNETRESOURCE, LPCSTR, ;
  2053.                    LPCSTR, DWORD) mpr.dll ;
  2054.                    from "WNetAddConnection3A"
  2055.    extern DWORD       WNetCancelConnection(LPCSTR, BOOL) mpr.dll ;
  2056.                    from "WNetCancelConnectionA"
  2057.    extern DWORD       WNetCancelConnection2(LPCSTR, DWORD, BOOL) mpr.dll ;
  2058.                    from "WNetCancelConnection2A"
  2059.    extern DWORD       WNetGetConnection(LPCSTR, LPSTR, LPDWORD) mpr.dll ;
  2060.                    from "WNetGetConnectionA"
  2061.    extern DWORD       WNetUseConnection(HWND, LPNETRESOURCE, LPCSTR, LPCSTR, ;
  2062.                    DWORD, LPSTR, LPDWORD, LPDWORD) mpr.dll ;
  2063.                    from "WNetUseConnectionA"
  2064.    extern DWORD       WNetSetConnection(LPCSTR, DWORD, LPVOID) mpr.dll ;
  2065.                    from "WNetSetConnectionA"
  2066.  
  2067.    //
  2068.    //  Network Connection Dialogs.
  2069.    // 
  2070.    extern DWORD       WNetConnectionDialog(HWND, DWORD) mpr.dll
  2071.    extern DWORD       WNetDisconnectDialog(HWND, DWORD) mpr.dll
  2072.  
  2073.    #define LPCONNECTDLGSTRUCT LPSTRUCTURE
  2074.  
  2075.    extern DWORD       WNetConnectionDialog1(LPCONNECTDLGSTRUCT) mpr.dll ;
  2076.                    from "WNetConnectionDialog1A"
  2077.  
  2078.    #define LPDISCDLGSTRUCT LPSTRUCTURE
  2079.  
  2080.    extern DWORD       WNetDisconnectDialog1(LPDISCDLGSTRUCT) mpr.dll ;
  2081.                    from "WNetDisconnectDialog1A"
  2082.  
  2083.    //
  2084.    //  Network Browsing.
  2085.    //
  2086.  
  2087.    extern DWORD       WNetOpenEnum(DWORD, DWORD, DWORD, LPNETRESOURCE, ;
  2088.                    LPHANDLE) mpr.dll ;
  2089.                    from "WNetOpenEnumA"
  2090.    extern DWORD       WNetEnumResource(HANDLE, LPDWORD, LPVOID, LPDWORD) mpr.dll ;
  2091.                    from "WNetEnumResourceA"
  2092.    extern DWORD       WNetCloseEnum(HANDLE) mpr.dll
  2093.  
  2094.    //
  2095.    //  Universal Naming.
  2096.    //
  2097.  
  2098.    #define LPUNIVERSAL_NAME_INFO
  2099.    #define LPREMOTE_NAME_INFO
  2100.  
  2101.    extern DWORD       WNetGetUniversalName(LPCSTR, DWORD, LPVOID, ;
  2102.                    LPDWORD) mpr.dll ;
  2103.                    from "WNetGetUniversalNameA"
  2104.  
  2105.    //
  2106.    //  Authentication and Logon/Logoff.
  2107.    //
  2108.  
  2109.    extern DWORD       WNetGetUser(LPCSTR, LPSTR, LPDWORD) mpr.dll ;
  2110.                    from "WNetGetUserA"
  2111.  
  2112.    //
  2113.    // Other.
  2114.    //
  2115.  
  2116.    extern DWORD       WNetGetProviderName(DWORD, LPSTR, LPDWORD) mpr.dll ;
  2117.                    from "WNetGetProviderNameA"
  2118.  
  2119.    #define LPNETINFOSTRUCT LPSTRUCTURE
  2120.  
  2121.    extern DWORD       WNetGetNetworkInformation(LPCSTR, LPNETINFOSTRUCT) mpr.dll ;
  2122.                    from "WNetGetNetworkInformationA"
  2123.  
  2124.    //
  2125.    //  User Profiles.
  2126.    //
  2127.  
  2128.    #define PFNGETPROFILEPATH   FARPROC
  2129.    #define PFNRECONCILEPROFILE FARPROC
  2130.  
  2131.    //
  2132.    //  Policies.
  2133.    //
  2134.  
  2135.    #define PFNPROCESSPOLICIES FARPROC
  2136.  
  2137.    //
  2138.    //  Error handling.
  2139.    // 
  2140.  
  2141.    extern DWORD       WNetGetLastError(LPDWORD, LPSTR, DWORD, LPSTR, ;
  2142.                    DWORD) mpr.dll ;
  2143.                    from "WNetGetLastErrorA"
  2144.  
  2145.    //
  2146.    //  For Shell
  2147.    //
  2148.   
  2149.    #define LPNETCONNECTINFOSTRUCT LPSTRUCTURE
  2150.  
  2151.    extern DWORD       MultinetGetConnectionPerformance(LPNETRESOURCE, ;
  2152.                    LPNETCONNECTINFOSTRUCT) mpr.dll ;
  2153.                    from "MultinetGetConnectionPerformanceA"
  2154.    // End winnetwk.h
  2155. return null
  2156.  
  2157. function ExternShell
  2158.    //---------------------------------------------------------------
  2159.    //
  2160.    // Adapted from shellapi.h 
  2161.    //
  2162.    // SHELL.DLL functions, types, and definitions 
  2163.    //
  2164.    //---------------------------------------------------------------
  2165.  
  2166.    #define HDROP  HANDLE
  2167.  
  2168.    extern UINT        DragQueryFile(HDROP,UINT,LPSTR,UINT) shell32 ;
  2169.                       from "DragQueryFileA"
  2170.    extern BOOL        DragQueryPoint(HDROP,LPSTRUCTURE) shell32
  2171.    extern VOID        DragFinish(HDROP) shell32
  2172.    extern VOID        DragAcceptFiles(HWND,BOOL) shell32
  2173.  
  2174.    extern HINSTANCE   ShellExecute(HWND, LPCSTR, LPCSTR, LPCSTR, ;
  2175.                       LPCSTR, CINT) shell32 ;
  2176.                       from "ShellExecuteA"
  2177.    extern HINSTANCE   FindExecutable(LPCSTR, LPCSTR, LPSTR) shell32 ;
  2178.                       from "FindExecutableA"
  2179.  
  2180.    extern CINT        ShellAbout(HWND, LPCSTR, LPCSTR, HICON) shell32 ;
  2181.                       from "ShellAboutA"
  2182.    extern HICON       DuplicateIcon(HINSTANCE, HICON) shell32
  2183.    extern HICON       ExtractAssociatedIcon(HINSTANCE, LPSTR, LPWORD) shell32 ;
  2184.                       from "ExtractAssociatedIconA"
  2185.    extern HICON       ExtractIcon(HINSTANCE, LPCSTR, UINT) shell32 ;
  2186.                       from "ExtractIconA"
  2187.    #define LPDRAGINFO LPSTRUCTURE
  2188.  
  2189.    //
  2190.    // AppBar stuff
  2191.    //
  2192.    #define PAPPBARDATA LPSTRUCTURE
  2193.    extern UINT        SHAppBarMessage(DWORD, PAPPBARDATA) shell32
  2194.    //
  2195.    //  EndAppBar
  2196.    //
  2197.  
  2198.    extern UINT        ExtractIconEx(LPCSTR, CINT, PHICON, PHICON, UINT) shell32 ;
  2199.                       from "ExtractIconExA"
  2200.  
  2201.    //
  2202.    // Shell File Operations
  2203.    //
  2204.  
  2205.    #define FILEOP_FLAGS     WORD
  2206.    #define LPSHFILEOPSTRUCT LPSTRUCTURE
  2207.  
  2208.    extern CINT        SHFileOperation(LPSHFILEOPSTRUCT) shell32 ;
  2209.                       from "SHFileOperationA"
  2210.    extern void        SHFreeNameMappings(HANDLE) shell32
  2211.  
  2212.    #define LPSHNAMEMAPPING LPSTRUCTURE
  2213.  
  2214.    //
  2215.    // End Shell File Operations
  2216.    //
  2217.  
  2218.    //
  2219.    //  Begin ShellExecuteEx and family
  2220.    //
  2221.    #define LPSHELLEXECUTEINFO LPSTRUCTURE
  2222.  
  2223.    extern BOOL        ShellExecuteEx(LPSHELLEXECUTEINFO) shell32 ;
  2224.                       from "ShellExecuteExA"
  2225.    //
  2226.    //  End ShellExecuteEx and family
  2227.    //
  2228.  
  2229.    //
  2230.    // Tray notification definitions
  2231.    //
  2232.    #define PNOTIFYICONDATA LPSTRUCTURE
  2233.  
  2234.    extern BOOL        Shell_NotifyIcon(DWORD, PNOTIFYICONDATA) shell32 ;
  2235.                       from "Shell_NotifyIconA"
  2236.    //
  2237.    // End Tray Notification Icons
  2238.    //
  2239.  
  2240.    //
  2241.    // Begin SHGetFileInfo
  2242.    //
  2243.  
  2244.    //
  2245.    // The SHGetFileInfo API provides an easy way to get attributes
  2246.    // for a file given a pathname.
  2247.    //
  2248.    //   PARAMETERS
  2249.    //
  2250.    //     pszPath              file name to get info about
  2251.    //     dwFileAttributes     file attribs, only used with SHGFI_USEFILEATTRIBUTES
  2252.    //     psfi                 place to return file info
  2253.    //     cbFileInfo           size of structure
  2254.    //     uFlags               flags
  2255.    //
  2256.    //   RETURN
  2257.    //     TRUE if things worked
  2258.    //
  2259.  
  2260.    #define LPSHFILEINFO LPSTRUCTURE
  2261.   
  2262.    extern DWORD       SHGetFileInfo(LPCSTR, DWORD, LPSHFILEINFO, ;
  2263.                      UINT, UINT) shell32 ;
  2264.                       from "SHGetFileInfoA"
  2265.  
  2266.    //
  2267.    // End SHGetFileInfo
  2268.    //
  2269.    // End shellapi.h
  2270. return null
  2271.  
  2272. function ExternDialog
  2273.    //--------------------------------------------------------------
  2274.    //
  2275.    //   Adapted from commdlg.h 
  2276.    //
  2277.    //   This module defines the 32-Bit Common Dialog APIs
  2278.    //
  2279.    //--------------------------------------------------------------
  2280.  
  2281.    #define LPOPENFILENAME LPSTRUCTURE
  2282.  
  2283.    extern BOOL        GetOpenFileName(LPOPENFILENAME) comdlg32.dll ;
  2284.                       from "GetOpenFileNameA"
  2285.    extern BOOL        GetSaveFileName(LPOPENFILENAME) comdlg32.dll ;
  2286.                       from "GetSaveFileNameA"
  2287.    extern short       GetFileTitle(LPCSTR, LPSTR, WORD) comdlg32.dll ;
  2288.                       from "GetFileTitleA"
  2289.  
  2290.    #define LPCHOOSECOLOR LPSTRUCTURE
  2291.  
  2292.    extern BOOL        ChooseColor(LPCHOOSECOLOR) comdlg32.dll ;
  2293.                       from "ChooseColorA"
  2294.  
  2295.    #define LPFINDREPLACE LPSTRUCTURE
  2296.  
  2297.    extern HWND        FindText(LPFINDREPLACE) comdlg32.dll ;
  2298.                       from "FindTextA"
  2299.    extern HWND        ReplaceText(LPFINDREPLACE) comdlg32.dll ;
  2300.                       from "ReplaceTextA"
  2301.  
  2302.    #define LPCHOOSEFONT LPSTRUCTURE
  2303.  
  2304.    extern BOOL        ChooseFont(LPCHOOSEFONT) comdlg32.dll ;
  2305.                       from "ChooseFontA"
  2306.  
  2307.    #define LPPRINTDLG LPSTRUCTURE
  2308.  
  2309.    extern BOOL        PrintDlg(LPPRINTDLG) comdlg32.dll ;
  2310.                       from "PrintDlgA"
  2311.  
  2312.    extern DWORD       CommDlgExtendedError(VOID) comdlg32.dll
  2313.  
  2314.    #define LPPAGESETUPDLG LPSTRUCTURE
  2315.  
  2316.    extern BOOL        PageSetupDlg( LPPAGESETUPDLG ) comdlg32.dll ;
  2317.                       from "PageSetupDlgA"
  2318.    // End commdlg.h
  2319. return null
  2320.  
  2321.